powershell 如果找不到用户,自动将用户添加到AD组

ibrsph3r  于 2023-01-20  发布在  Shell
关注(0)|答案(3)|浏览(145)

我正在尝试设置一个PS脚本来添加成员,如果他们不是一个组的一部分,并运行它作为一个任务。有人可以证明代码并提供反馈吗?谢谢。

$GROUP = 'CN=Group1,OU=SomeOU,DC=domain,DC=local'

Get-ADUser -Filter * -SearchBase "DC=domain,DC=local" -Properties MemberOf | 
Where-Object {$_.MemberOf -notcontains $GROUP } | 
ForEach-Object { Add-ADGroupMember -Identity $GROUP -Members $_ }
but5z9lq

but5z9lq1#

代码看起来不错,但如果利用Active Directory Filter

$group = 'CN=Group1,OU=SomeOU,DC=domain,DC=local'
Get-ADUser -LDAPFilter "(!memberof=$group)" -SearchBase "DC=domain,DC=local" |
    Add-ADPrincipalGroupMembership -MemberOf $group

-LDAPFilter "(!memberof=$group)"搜索不属于您组的所有用户,这比查询搜索库中的所有用户然后使用powershell进行筛选要高效得多。

rks48beu

rks48beu2#

我可能会使用Add-ADPrincipalGroupMembership来代替,它将用户作为管道输入,并将要添加到的组作为参数。

Get-ADUser -Filter * -SearchBase "DC=domain,DC=local" -Properties MemberOf | 
Where-Object MemberOf -notcontains $GROUP | 
Add-ADPrincipalGroupMembership -MemberOf $GROUP
shyt4zoc

shyt4zoc3#

类似这样的操作应该可以在不转储每个用户的情况下工作(-ne不会做你想做的事情,过滤器也不会接受-notcontains)。-eq使用左边的数组。-not优先级很高,所以需要括号。

get-aduser -filter "-not (memberof -eq '$group')" -property memberof -SearchBase 'DC=domain,DC=local'

相关问题