为 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 集成