簡體   English   中英

Azure AD 將delta組成員添加到另一個組

[英]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中了。

在此處輸入圖像描述

供你參考:

Azure ad 將一個組的成員添加到另一個組

不確定這是否會更快,但您可以嘗試一下並告訴我,但可以肯定的是,如果成員已經存在,則此代碼不會嘗試添加成員。

邏輯是首先獲取目標組的所有成員並將他們的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.

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