多个-ne滤波器Powershell

时间:2018-08-24 20:41:43

标签: powershell

我正在尝试创建一个PS脚本,以自动从我们的禁用用户OU中的所有帐户中删除几乎所有的组成员身份。我在这里找到了一个不错的脚本,该脚本已于几年前被贡献者修改,以删除所有具有1个例外的组。

我现在正试图找到一种添加多个异常的方法。

我们使用AD组来许可我们的o365邮箱,我们需要在分离后的90天内保持这些组的成员身份不变。

我当前拥有的脚本是这样:

$ou = Get-ADUser -SearchBase "OU=Disabled,DC=domain,DC=local" -Filter *
foreach ($user in $ou) {
$UserDN = $user.DistinguishedName
Get-ADGroup -LDAPFilter "(member=$UserDN)" | foreach-object {
if ($_.name -ne "Domain Users") {remove-adgroupmember -identity $_.name -member $UserDN -Confirm:$False} }
}

我将如何修改此部分以允许更多已过滤的组?

if ($_.name -ne "Domain Users") {remove-adgroupmember -identity $_.name -member $UserDN -Confirm:$False}

预先感谢您的帮助! 克里斯

1 个答案:

答案 0 :(得分:4)

如果要与列表而不是字符串进行比较,可以使用-notin运算符。例如:

$GroupsToKeep = 'Domain Users','O365 Licensing','Hates Pie'
$ou = Get-ADUser -SearchBase "OU=Disabled,DC=domain,DC=local" -Filter *
foreach ($user in $ou) {
    $UserDN = $user.DistinguishedName
    Get-ADGroup -LDAPFilter "(member=$UserDN)" | foreach-object {
        if ($_.name -notin $GroupsToKeep) {
            remove-adgroupmember -identity $_.name -member $UserDN -Confirm:$False
        } 
    }
}

这会将OU中的每个用户从“域用户”,“ O36​​5许可”和“讨厌的馅饼”之外的任何组中删除(讨厌的馅饼对我来说似乎是不自然的,必须跟踪他们,它们可能是吸血鬼)。