簡體   English   中英

如果找不到,自動將用戶添加到 AD 組

[英]Automate adding users into AD group if not found

我正在嘗試設置一個 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 $_ }

代碼看起來不錯,但可以通過利用Active Directory 過濾器來提高效率:

$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)"搜索所有不屬於您的組的用戶,這比查詢搜索庫中的所有用戶然后使用進行過濾要有效得多。

我可能會改用Add-ADPrincipalGroupMembership ,它將用戶作為管道輸入並將要添加的組作為參數。 應該表現好一點。

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

像這樣的東西應該可以在不轉儲每個用戶的情況下工作(-ne 不會做你想做的事,過濾器也不會采用 -notcontains)。 -eq 與左側的數組一起使用。 -not 具有高優先級,因此需要括號。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM