Назад | Перейти на главную страницу

PowerShell - ограничьте поиск только одним подразделением

У меня есть этот командлет, и я хотел бы ограничить результаты только одним OU:

Get-ADUser -Filter  {(Enabled -eq $false)} | ? { ($_.distinguishedname -notlike '*Disabled Users*') } 

Теперь я попытался использовать

-searchbase "ou=FirstOU,dc=domain,dc=com"

Но если я использую -SearchBase Я получаю такую ​​ошибку:

Where-Object : A parameter cannot be found that matches parameter name 'searchb
ase'.
At line:1 char:114
+ Get-ADUser -Filter  {(Enabled -eq $false)} | ? { ($_.distinguishedname -notli
ke '*Disabled Users*') } -searchbase <<<<  "ou=FirstOU,dc=domain,dc=com"
    + CategoryInfo          : InvalidArgument: (:) [Where-Object], ParameterBi
   ndingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Comm
   ands.WhereObjectCommand

Что я пытаюсь сделать, так это получить всех отключенных пользователей из определенного OU, НО есть OU INSIDE, что FirstOU, которое я хочу исключить: OU «Disabled Users».

как вы, возможно, догадались, я хочу найти пользователей с ограниченными возможностями в конкретном подразделении, которых нет в подразделении «Пользователи с ограниченными возможностями» внутри этого подразделения.

моя структура:

Forest
   FirstOU
      Users,groups,etc...
      Disabled Users OU

Самый простой способ ограничить поиск одним OU использует SearchScope:

Get-ADUser -Filter  {(Enabled -eq $false)} -SearchScope OneLevel -SearchBase "ou=FirstOU,dc=domain,dc=com"

В -SearchBase Параметр должен использоваться с Get-ADUser, а не с Where-Object (с псевдонимом?). Это должно работать:

Get-ADUser -Filter {(Enabled -eq $false)} -SearchBase "ou=FirstOU,dc=domain,dc=com" | ? { ($_.distinguishedname -notlike '*Disabled Users*') }

Самый простой способ - поставить -SearchBase перед -Filter.

Get-ADUser -searchbase "ou=FirstOU,dc=domain,dc=com" -Filter {(Enabled -eq $false)} | ? { ($_.distinguishedname -notlike '*Disabled Users*') }

Обходит проблему использования -SearchBase с участием Get-ADUser, и нет Where-Object (? псевдоним Where-Object в PowerShell), запустив Where-Object после того, как вы уже прошли -SearchBase к Get-ADUser.