web-dev-qa-db-ja.com

PowerShell-検索を1つのOUのみに制限します

このコマンドレットを取得したので、結果を1つの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からすべての無効なユーザーを取得することですが、FirstOUの中に、除外したいOUである「無効なユーザー」OUがあります。

ご想像のとおり、特定のOU内で、そのOU内の "Disabled Users" OUにない無効なユーザーを見つけたいと思います。

私の構造:

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

-SearchBaseパラメータは、Where-ObjectではなくGet-ADUserで使用する必要があります(?でエイリアス)。これはうまくいくはずです:

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

検索を1つのOUに制限する最も簡単な方法は、SearchScopeを使用することです。

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

最も簡単な方法は、-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にエイリアスされます)。 ] _ -SearchBaseGet-ADUserにすでに渡した後。

3
HopelessN00b