我有这个 cmdlet,我想将结果限制为仅一个 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 内的“禁用用户”OU 中的禁用用户。
我的结构:
Forest
FirstOU
Users,groups,etc...
Disabled Users OU
答案1
该-SearchBase
参数必须与 Get-ADUser 一起使用,而不是 Where-Object(别名为 ?)。这应该有效:
Get-ADUser -Filter {(Enabled -eq $false)} -SearchBase "ou=FirstOU,dc=domain,dc=com" | ? { ($_.distinguishedname -notlike '*Disabled Users*') }
答案2
将搜索限制为一个的最简单方法OU
是使用 SearchScope:
Get-ADUser -Filter {(Enabled -eq $false)} -SearchScope OneLevel -SearchBase "ou=FirstOU,dc=domain,dc=com"
答案3
最简单的方法是将 放在-SearchBase
之前-Filter
。
Get-ADUser -searchbase "ou=FirstOU,dc=domain,dc=com" -Filter {(Enabled -eq $false)} | ? { ($_.distinguishedname -notlike '*Disabled Users*') }
通过在已经将to传递给 之后运行 来解决必须-SearchBase
使用Get-ADUser
而不是Where-Object
(在 PowerShell 中?
别名为)的问题。Where-Object
Where-Object
-SearchBase
Get-ADUser