微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Powershell - 如果不是多个组的成员,则将 OU 中的用户广告到安全组

如何解决Powershell - 如果不是多个组的成员,则将 OU 中的用户广告到安全组

我正在编写一个脚本来检查来自特定 OU 的用户是否不是组 1、组 2、组 3 或组 4 的成员。

我已经尝试过这个,但有些用户在他们不应该被列出的情况下被列出。

get-aduser -filter * -searchbase "$Ou" | where-object {((get-aduser $_.samaccountname -properties memberof).memberof -ne "$grp1") -or ((get-aduser $_.samaccountname -properties memberof).memberof -ne "grp2") -or ((get-aduser $_.samaccountname -properties memberof).memberof -ne "grp3") -or ((get-aduser $_.samaccountname -properties memberof).memberof -ne "grp4")} | Select SamAccountName

解决方法

不确定我是否遵循,但听起来您要求的是这样的:

$ou = 'OU=crowleytest,DC=contoso,DC=local'
$group1 = 'CN=group1,OU=crowleytest,DC=local'
$group2 = 'CN=group2,DC=local'
$group3 = 'CN=group3,DC=local'
$group4 = 'CN=group4,DC=local'

$users = Get-ADUser -SearchBase $ou -Filter * -Properties memberof

$results = $users | where {
    $_.memberof -notcontains $group1 -and
    $_.memberof -notcontains $group2 -and
    $_.memberof -notcontains $group3 -and
    $_.memberof -notcontains $group4
}

$results

e - 此过滤器也可以将 moved to the left 放入 -filter 参数中以获得更好的性能,但这需要不同的语法。如果您的用户列表不是很大,那么上面的示例就足够了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。