[英]Azure AD add delta group members to another group
我有一個腳本可以拉動一個組的所有成員並將這些成員復制到另一個組。
運行大約需要一個小時,所以我希望能夠拉出任何尚未加入第二組的成員。
有沒有一種簡單的方法可以將其添加到我已有的腳本中?
具體是不是可以比較兩個組,只寫已經不在里面的成員。
$ExistingMembers = Get-AzureADGroup -ObjectId xxxxxxxxxxxxxxxxx | Get-AzureADGroupMember -All $True
Foreach ($Member in $ExistingMembers){
Add-AzureADGroupMember -ObjectId xxxxxxxxxxxxxxx -RefObjectId $Member.ObjectId
}
我試圖在我的環境中為我重現它在短時間內工作正常,延遲背后的原因可能是因為你的組中有更多成員。
如果您的群組成員超過 100 人,請嘗試使用以下 PowerShell 代碼
$group1 = "ObjectId pulled from AAD"
$group2 = "ObjectId pulled from AAD"
$membersGroup1 = Get-AzureADGroupMember -ObjectId $group1 -All $true
foreach($member in $membersGroup1)
{
$currentuser = Get-AzureADUser -ObjectId $member.ObjectId | select objectid
Add-AzureADGroupMember -ObjectId $group2 -RefObjectId $currentuser.objectid
}
添加了群組成員
運行上面的腳本后,組1的成員很快就成功添加到組2中了。
供你參考:
不確定這是否會更快,但您可以嘗試一下並告訴我,但可以肯定的是,如果成員已經存在,則此代碼不會嘗試添加成員。
邏輯是首先獲取目標組的所有成員並將他們的ObjectId
存儲在HashSet<T>
中,這有助於我們避免添加已經存在的新成員。
請注意,此處的順序與您的腳本相反,我們不是先獲取源組的成員,而是獲取目標的成員。
# This is the Group you're about to Add new Members (Destination)! The order is reversed here
[Collections.Generic.HashSet[Guid]] $guids = (Get-AzureADGroupMember -ObjectId xxxx -All $True).ObjectId
# Loop through the Source Group
foreach($member in Get-AzureADGroupMember -ObjectId yyyy -All $True) {
# if this member does not exist in the Destination group
if($guids.Add($member.ObjectId)) {
# add it
Add-AzureADGroupMember -ObjectId xxxx -RefObjectId $member
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.