Home Без рубрики Forest Migration Миграция Exchange из старого домена в новый домен

Forest Migration Миграция Exchange из старого домена в новый домен

by admin

Создание пользователей в CORP

Есть 2 домена сделаем в них тестовых пользователей

Import-Module ActiveDirectory

$OU = "OU=RU,DC=corp.local,DC=loc"
$Password = ConvertTo-SecureString "Qwerty123" -AsPlainText -Force

$Users = @(
    @{GivenName="Alexey"; Surname="Ivanov"; SamAccountName="alexey.ivanov"}
    @{GivenName="Maria"; Surname="Petrova"; SamAccountName="maria.petrova"}
    @{GivenName="Igor"; Surname="Sidorov"; SamAccountName="igor.sidorov"}
    @{GivenName="Elena"; Surname="Kuznetsova"; SamAccountName="elena.kuznetsova"}
    @{GivenName="Sergey"; Surname="Vasilyev"; SamAccountName="sergey.vasilyev"}
    @{GivenName="Natalia"; Surname="Morozova"; SamAccountName="natalia.morozova"}
    @{GivenName="Dmitry"; Surname="Kovalev"; SamAccountName="dmitry.kovalev"}
    @{GivenName="Olga"; Surname="Smirnova"; SamAccountName="olga.smirnova"}
    @{GivenName="Vladimir"; Surname="Fedorov"; SamAccountName="vladimir.fedorov"}
    @{GivenName="Anna"; Surname="Mikhailova"; SamAccountName="anna.mikhailova"}
)

foreach ($User in $Users) {
    New-ADUser -GivenName $User.GivenName `
               -Surname $User.Surname `
               -SamAccountName $User.SamAccountName `
               -UserPrincipalName "$($User.SamAccountName)@corp.local" `
               -Name "$($User.GivenName) $($User.Surname)" `
               -Path $OU `
               -AccountPassword $Password `
               -Enabled $true `
               -PassThru
} 

Сделаем всем почтовые ящики в CORP

Сделать всем почтовые ящики

Get-ADUser -Filter * -SearchBase "OU=RU,DC=ctdrus,DC=loc" | ForEach-Object { Enable-Mailbox $_.SamAccountName }

Настроем трасты между CORP и CTDRUS

Создать сервер условной пересылки из ctdrus в corp и из corp в ctdrus в DNS

Открываем Domain and Trust

Жмем new trust

Жмем доверие леса

В домене corp сделали учетку trustdomain

Миграция Exchange

Включаем  с обеих сторон MRS

Проверить на друх серверах

Test-MRSHealth

Проверить с сервера на который будем мигрировать доступность MRS сервера , подставить креды админа сервера exchange

Test-MigrationServerAvailability -ExchangeRemoteMove -Autodiscover -EmailAddress igor.sidorov@domain.ru -Credentials (Get-Credential)  

Условия при которых учетная запись не будет создаватся, а мигрируется в нужную

У нас есть 2 домена , CTDRUS.LOC И CORP.LOC . В домене CORP.LOC уже созданы пользователи. При миграции идет задвоение пользователя . Ниже пункты при которых задваивание происходить не будет

Задвоение пользователей
Задвоение пользователей после миграции
  1. Есть домен CTDRUS из него мигрируем пользователя Maria Petrova, проверяем ее в CORP , если не нашлось приравниваем SAM account name
Get-ADUser -Filter {SamAccountName -eq "maria.petrova"}

2. Создаем почтовый контакт в домене куда будет проходить миграция

Enable-MailUser -Identity "maria.petrova" -ExternalEmailAddress "maria.petrova@domain.ru"

3. Переносим Proxy adress & Legacy DN

Делаем в CTDRUS.LOC

Get-ADUser -Identity "maria.petrova" -Properties proxyAddresses, legacyExchangeDN | Format-List proxyAddresses, legacyExchangeDN

Меняем в CORP.loc

Set-ADUser -Identity "maria.petrova" -Add @{proxyAddresses="SMTP:maria.petrova@domain.ru","smtp:maria.petrova@ctdrus.loc"}

Set-ADUser -Identity "maria.petrova" -Replace @{legacyExchangeDN="/o=CTDRUS/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ee7ec038b4494710877133a29614aed4-Maria Petrova"}

Подготовка миграционного пакета

cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"

ИЗ CTDRUS > CORP

$LocalCredentials = Get-Credential
ctdrus\administrator
Qwerty123


$RemoteCredentials = Get-Credential
corp\administrator
Qwerty123


.\Prepare-MoveRequest.ps1 -Identity maria.petrova -RemoteForestDomainController V19CTDMSC02100.ctdrus.loc -RemoteForestCredential $RemoteCredentials -LocalForestDomainController S22RUMSCDC1.corp.local -LocalForestCredential $LocalCredentials -targetmailuserOU "OU=RU,DC=corp,DC=local" -UseLocalObject

После переходим в ECP в миграции

Проверить состояние миграции

Посмотреть в миграцию в процентах

[PS] C:\Program Files\Microsoft\Exchange Server\V15\Scripts>Get-MoveRequest | Get-MoveRequestStatistics | ft DisplayName,Status,Queue,PercentComplete -AutoSize

DisplayName   Status    Queue PercentComplete
-----------   ------    ----- ---------------
Maria Petrova Completed                   100

Информативаная команда , показывает скорость и ошибки

Get-MoveRequestStatistics -Identity maria.petrova@domain.ru | fl
Status
SyncStage                                : IncrementalSync
BytesTransferred                         : 108 KB (110,573 bytes)
BytesTransferredPerMinute                : 0 B (0 bytes)
TotalMailboxSize                         : 53.79 KB (55,081 bytes)

При SyncStage IncrementalSync , мы автоматически можем завершить миграцию командой

Message                                  : Informational: The move request for mailbox 157a0da3-dd3d-46f8-9b19-6ff4983e2aa8 has reached synced state.
                                           Next incremental sync is scheduled at 03/11/2025 13:23:38


Complete-MigrationBatch

Создаем коннекторы отправки

В моем случае есть 2 сервера exchange , V19MBX5 — CTDRUS.LOC , V22MBX1 — CORP.LOC , почта приходит и уходит с V19MBX5. Задача настроить почтовый обмен между лесами .

С двух сторон добавим

CTDRUS.LOC

​New-SendConnector -Name "Cross-Forest" -Usage Internal -AddressSpaces domain.ru -SmartHosts v22mbx1.corp.local -SmartHostAuthMechanism BasicAuthRequireTLS -AuthenticationCredential $mycred -SourceTransportServers V19MBX5.CTDRUS.LOC -DNSRoutingEnabled $false

.Enable-CrossForestConnector.ps1 -Connector "Cross-Forest" -user "ANONYMOUS LOGON"

COPR.LOC

​New-SendConnector -Name "Cross-Forest" -Usage Internal -AddressSpaces domain.ru -SmartHosts v19mbx5.ctdrus.loc -SmartHostAuthMechanism BasicAuthRequireTLS -AuthenticationCredential $mycred -SourceTransportServers V22MBX1 -DNSRoutingEnabled $false

cd "C:\Program Files\Microsoft\Exchange Server\V15\Scripts"
.Enable-CrossForestConnector.ps1 -Connector "Cross-Forest" -user "ANONYMOUS LOGON"

CTDRUS

Так как нету сертификата отключим авторизацию на коннекторе в CTDRUS.LOC в сторону COPR.LOC

Область наш домен который мы будем пересылать на соседний сервер если почтового ящика не будет на этом exchange

На этом же сервере будет отправка в интернет

Коннетор получения почты с соседнего exchange

Принимать всю почту

Добавим анонимный релей

Get-ReceiveConnector "V22MBX1" | Add-ADPermission -User "NT AUTHORITY\Anonymous Logon" -Extende
dRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Теперь когда почтовый сервер из corp будет пересылать письма на ctdrus , сервер будет принимать почту без авторизации

CORP

Тут все аналогично

А вот определение области всю почту слать на ctdrus.loc , чтобы пользователи этого exchange могли доставлять письма на другой.

https://petri.com/exchange-2010-cross-forest-migration-galsync

Autodiscover одного внешнего домена , на 2 леса

https://4sysops.com/archives/exchange-autodiscover-in-a-multi-forest-environment-part-1-active-directory
https://www.risual.com/2018/04/cross-forest-exchange-migrations-and-free-busy-with-shared-namespace/

https://learn.microsoft.com/en-us/powershell/module/exchange/export-autodiscoverconfig?view=exchange-ps
В этом примере указано, что Exchange развернут в нескольких лесах Active Directory при установке точки подключения службы автообнаружения к контроллеру домена dc.contoso.com в лесу Active Directory contoso.com.

CORP

$cred = Get-Credential

Export-AutoDiscoverConfig -DomainController S22RUMSCDC1.corp.local -TargetForestDomainController V19CTDMSC02100.ctdrus.loc -MultipleExchangeDeployments $true -TargetForestCredential $cred

В домене CTDRUS как видим создалась запись

CTDRUS

$cred = Get-Credential

Export-AutoDiscoverConfig -DomainController V19CTDMSC02100.ctdrus.loc -TargetForestDomainController S22RUMSCDC1.corp.local -MultipleExchangeDeployments $true -TargetForestCredential $cred

==

Для домена ctdrus.loc (создаем доверие с corp.local):

  1. Без карантина (создание доверия):
bashКопироватьnetdom trust ctdrus.loc /domain:corp.local /quarantine:no
  1. С включением SID-истории (создание доверия с историей SID):
bashКопироватьnetdom trust ctdrus.loc /domain:corp.local /enableSIDhistory:yes

Для домена corp.local (создаем доверие с ctrus.loc):

  1. Без карантина (создание доверия):
bashКопироватьnetdom trust corp.local /domain:ctdrus.loc /quarantine:no
  1. С включением SID-истории (создание доверия с историей SID):
bashКопироватьnetdom trust corp.local /domain:ctdrus.loc /enableSIDhistory:yes

Эти команды создадут двустороннее доверие между доменами ctrus.loc и corp.local. Убедитесь, что вы выполняете их с правами администратора на каждом из доменов и что домены находятся в доступной сети.

You may also like

Leave a Comment