Перемещение групп из одного леса в другой для 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 не записывает значение обратно в атрибут mS-DS-ConsistencyGuid в Active Directory.

При перемещении между лесами при перемещении объекта группы из одного леса (например, F1) в другой лес (например, F2) необходимо скопировать значение mS-DS-ConsistencyGuid (если оно присутствует) или значение objectGUID из объекта в лесУ F1 в атрибут mS-DS-ConsistencyGuid объекта в F2.

Используйте следующие скрипты в качестве руководства, чтобы узнать, как перенести одну группу из одного леса в другой. Эти сценарии также можно использовать в качестве руководства по миграции нескольких групп. Скрипты используют имя леса F1 для исходного леса и F2 для целевого леса.

Сначала мы получаем сведения о objectGUID и mS-DS-ConsistencyGuid объекта группы в лесу F1. Эти атрибуты экспортируются в 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-файл для метки атрибута mS-DS-ConsistencyGuid целевого объекта в лесу F2:

<#
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.