分享方式:


在 Microsoft Entra Connect 中將群組從一個樹系遷移到另一個樹系

本文說明如何將群組從一個樹系遷移到另一個樹系,讓遷移的群組物件符合雲端的現有物件。

必要條件

  • Microsoft Entra Connect 1.5.18.0 版或更新版本
  • 來源錨點屬性設定為 mS-DS-ConsistencyGuid

遷移群組

從 1.5.18.0 版開始,Microsoft Entra Connect 支援使用群組的 mS-DS-ConsistencyGuid 屬性。 如果您選擇 mS-DS-ConsistencyGuid 作為來源錨點屬性,並將值填入 Active Directory 中,則 Microsoft Entra Connect 會使用 mS-DS-ConsistencyGuid 的值作為 immutableId。 否則會回到使用 objectGUID。 但請注意,Microsoft Entra Connect 不會將值寫回 Active Directory 中的 mS-DS-ConsistencyGuid 屬性。

在跨樹系移動期間,當群組物件從一個樹系 (假設是 F1) 移至另一個樹系 (假設是 F2) 時,您需要將該物件在 F1 中的 mS-DS-ConsistencyGuid 值 (如果存在) 或 objectGUID 值,複製到該物件在 F2 中的 mS-DS-ConsistencyGuid 屬性。

將下列指令碼當作指南,了解如何將單一群組從一個樹系遷移到另一個樹系。 這些指令碼也可以當作指南來遷移多個群組。 這些指令碼使用樹系名稱 F1 作為來源樹系,使用 F2 作為目的地樹系。

首先,我們在樹系 F1 中取得群組物件的 objectGUIDmS-DS-ConsistencyGuid。 這些屬性匯出至 CSV 檔案。

<#
DESCRIPTION
============
This script will take DN of a group as input.
It then copies the objectGUID and mS-DS-ConsistencyGuid values along with other attributes of the given group to a CSV file.

This CSV file can then be used as input to the Export-Group script.
#>
Param(
       [ValidateNotNullOrEmpty()]
       [string]
       $dn,

       [ValidateNotNullOrEmpty()]
       [string]
       $outputCsv
)

$defaultProperties = @('samAccountName', 'distinguishedName', 'objectGUID', 'mS-DS-ConsistencyGuid')
$group  = Get-ADGroup -Filter "DistinguishedName -eq '$dn'" -Properties $defaultProperties -ErrorAction Stop
$results = @()
if ($group -eq $null)
{
       Write-Error "Group not found"
}
else
{
       $objectGUIDValue = [GUID]$group.'objectGUID'
       $mSDSConsistencyGuidValue = "N/A"
       if ($group.'mS-DS-ConsistencyGuid' -ne $null)
       {
              $mSDSConsistencyGuidValue = [GUID]$group.'mS-DS-ConsistencyGuid'
       }
       $adgroup = New-Object -TypeName PSObject
       $adgroup | Add-Member -MemberType NoteProperty -Name samAccountName -Value $($group.'samAccountName')
       $adgroup | Add-Member -MemberType NoteProperty -Name distinguishedName -Value $($group.'distinguishedName')
       $adgroup | Add-Member -MemberType NoteProperty -Name objectGUID -Value $($objectGUIDValue)
       $adgroup | Add-Member -MemberType NoteProperty -Name mS-DS-ConsistencyGuid -Value $($mSDSConsistencyGuidValue)
       $results += $adgroup
}

Write-Host "Exporting group to output file"
$results | Export-Csv "$outputCsv" -NoTypeInformation

接下來,我們使用產生的輸出 CSV 檔案,在樹系 F2 中將目標物件打上 mS-DS-ConsistencyGuid 屬性:

<#
DESCRIPTION
============
This script will take DN of a group as input and the CSV file that was generated by the Import-Group script.
It copies either the objectGUID or the mS-DS-ConsistencyGuid value from the CSV file to the given object.

#>
Param(
       [ValidateNotNullOrEmpty()]
       [string]
       $dn,

       [ValidateNotNullOrEmpty()]
       [string]
       $inputCsv
)

$group  = Get-ADGroup -Filter "DistinguishedName -eq '$dn'" -ErrorAction Stop
if ($group -eq $null)
{
       Write-Error "Group not found"
}

$csvFile = Import-Csv -Path $inputCsv -ErrorAction Stop
$msDSConsistencyGuid = $csvFile.'mS-DS-ConsistencyGuid'
$objectGuid = [GUID] $csvFile.'objectGUID'
$targetGuid = $msDSConsistencyGuid

if ($msDSConsistencyGuid -eq "N/A")
{
       $targetGuid = $objectGuid
}

Set-ADGroup -Identity $dn -Replace @{'mS-DS-ConsistencyGuid'=$targetGuid} -ErrorAction Stop

下一步

深入了解將內部部署身分識別與 Microsoft Entra ID 整合 (部分機器翻譯)。