我需要能够在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>
非常感谢提前!
路易斯
答案 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}