多个Where-Object子句无效

时间:2019-07-11 10:30:36

标签: c# powershell

我想列出整个公司中不同OU中的人员列表,但是必须省去一些OU。我尝试使用下面显示的代码来做到这一点,但它只是继续显示除管理员之外的所有人

我尝试检查这些子句是否有效,如果我只是单独尝试它们,暂时将其他子句排除在外。在这种情况下,也只剩下管理员,其他子句根本不起作用

我更改了一些数据保护措施。

$AdminOU = "OU=Admins,OU=Users,OU=Location,DC=company,DC=local"
$EXOU = "OU=Ex-workers,OU=Users,OU=Location,DC=company,DC=local"
$InactiveOU = "OU=deactivated,OU=aprenticeship,OU=Users,OU=Location,DC=company,DC=local"

$UsersWithDN = Get-ADUser -searchBase "$OUPath" -Filter * | 
    Where-Object {($_.distinguishedName -notlike "CN=*,$AdminOU") -and 
                  ($_.distinguishedName -notlike "CN=*,InactiveOU") -and 
                  ($_.distinguishedName -notlike "CN=*,EXOU")} | 
        Select-Object Samaccountname,distinguishedName

没有错误弹出,我希望得到列出管理员,前工作人员和已停用帐户的列表。但是,我只得到管理员不在的列表。

1 个答案:

答案 0 :(得分:2)

是因为匹配条件不包含$,所以变量引用不正确吗?首先 -notlike "CN=*,$AdminOU"是正确的,但是其他两个在匹配条件中没有$,即-notlike "CN=*,InactiveOU"-notlike "CN=*,EXOU"。 您是否尝试过将其更改为"CN=*,$InactiveOU""CN=*,$EXOU"?那应该有帮助。