PowerShell - Limita a pesquisa a apenas uma OU

5

Eu tenho esse cmdlet e gostaria de limitar os resultados a apenas uma OU:

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

Agora eu tentei usar

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

Mas se eu usar -SearchBase , recebo este erro:

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

O que estou tentando fazer é obter todos os usuários desativados de uma UO específica, MAS, há uma UO INSIDE na FirstOU que desejo excluir: a UO "Usuários Desabilitados".

Como você deve ter imaginado, quero encontrar usuários com deficiências em uma OU específica que não estejam na UO "Usuários com Deficiência" dentro dessa UO.

minha estrutura:

Forest
   FirstOU
      Users,groups,etc...
      Disabled Users OU
    
por NirPes 04.06.2014 / 17:10

3 respostas

10

O parâmetro -SearchBase deve ser usado com Get-ADUser, não Where-Object (com alias por?). Isso deve funcionar:

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

A maneira mais fácil de limitar a pesquisa a um OU é usando o SearchScope:

Get-ADUser -Filter  {(Enabled -eq $false)} -SearchScope OneLevel -SearchBase "ou=FirstOU,dc=domain,dc=com"
    
por 17.12.2015 / 10:27
3

O caminho mais fácil seria colocar o -SearchBase antes do -Filter .

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

Ocorre o problema de ter que usar -SearchBase com Get-ADUser e não Where-Object ( ? tem alias para Where-Object no PowerShell) executando Where-Object depois que você já passou pelo seu -SearchBase para Get-ADUser .

    
por 04.06.2014 / 17:19