Powershell排除多个OU

时间:2017-05-08 16:04:20

标签: powershell

我需要能够在Powershell中搜索活动用户时排除多个OU。 OU列表存储在数据表中,当新OU需要排除时可以更新。我无法想到一种动态排除这些OU的方法,即不需要更新脚本以添加新的

(`$_.distinguishedname -notlike "*OU1*")
每个OU

我现在已经尝试了几个小时而没有任何快乐。我甚至尝试通过循环数据表来创建过滤器,例如

$ToReturn = "(`$_.distinguishedname -notlike ""*$Row[0]*"")" 

然后添加

$ToReturn = $ToReturn + " -and (`$_.distinguishedname -notlike ""*$Row[0]*"")"

对于后续排除,但忽略变量。

更新1:返回用户的代码::

$users = Get-ADUser -SearchBase $SourceOu -Server $Domain -Filter {
        whenCreated -lt $DisableDate
        -and PasswordNeverExpires -eq $False
        }|? {$ExludedOUs} 

$ ExcludedOUs,我需要一种方法为数据表中的每个排除动态添加等价的($ _。distinguishedname -notlike" OU1 ")。 / p>

非常感谢提前!

路易斯

1 个答案:

答案 0 :(得分:0)

您可以使用-notmatch并使用|正则表达式运算符加入排除对象:

$OURegex = $ExcludedOUs -Join '|'
$users = Get-ADUser -SearchBase $SourceOu -Server $Domain -Filter {
    whenCreated -lt $DisableDate
    -and PasswordNeverExpires -eq $False
    } | Where-Object {$_.DistinguishedName -notmatch $OURegex}