Администратор Exchange может перемещать почтовые ящики пользователей в лесу Active Directory из одной базы данных в другую между серверами Exchange или между базами данных почтовых ящиков на одном сервере через веб-интерфейс центра администрирования Exchange или интерфейс командной строки PowerShell.
Подумайте, вы можете перенести почтовые ящики между базами данных с помощью Exchange Management PowerShell в Exchange 2016/2013/2010.
Чтобы переместить почтовый ящик из одной базы данных в другую, необходимо создать запрос на перемещение (если миграция происходит в том же лесу Active Directory, это называется локальным запросом на перемещение, если вы хотите переместить почтовый ящик между лесами AD – это запрос на удаленное перемещение).
Для перемещения почтового ящика пользователя используется командлет New-MoveRequest.
Чтобы создать локальный запрос на перемещение для почтового ящика определенного пользователя, выполните следующую команду:
New-MoveRequest -Identity jsmith@theitbros.com -TargetDatabase lonDB2 -BadItemLimit 100
Параметр TargetDatabase указывает имя базы данных почтовых ящиков, в которую следует переместить почтовый ящик.
Параметр BadItemLimit указывает количество поврежденных элементов, которые можно пропустить при перемещении почтового ящика.
Если вы укажете BadItemLimit 0, это означает, что если в почтовом ящике будут какие-либо поврежденные элементы, запрос на перемещение завершится с ошибкой, и почта останется в исходной почтовой базе данных.
Если размер почтового ящика достаточно велик, он может перемещаться между почтовыми ящиками довольно долго.
Чтобы отслеживать процент миграции почтовых ящиков, вы можете использовать командлет Get-MoveRequestStatistics.
Например, чтобы получить статус передачи почтового ящика jsmith@theitbros.com, выполните команду:
Get-MoveRequestStatistics -Identity jsmith@theitbros.com
Обратите внимание на столбец PercentComplete – он указывает процент выполнения задачи.
Общий размер почтового ящика указан в столбце TotalMailboxSize.
Вы можете получить статистику по всем запросам на перемещение следующим образом:
Get-MoveRequest | Get-MoveRequestStatistics
Вы можете переместить все почтовые ящики в определенной базе данных в другую базу данных.
Для удобства отслеживания статуса перемещения вы можете указать имя задачи пакетного перемещения (параметр BatchName):
Get-Mailbox -Database lonDB1 | New-MoveRequest -BatchName "lonDB1tolonDB2” -TargetDatabase lonDB2 -Priority High -BadItemLimit 50 –AcceptLargeDataLoss
Статус задания на перемещение можно получить следующим образом:
Get-MoveRequest -BatchName lonDB1tolonDB2 | Format-List DisplayName,Alias,Status,*database*
Вы можете временно приостановить передачу почтовых ящиков с помощью команды:
Get-MoveRequest | ? {$_.Batchname –like “*lonDB1tolonDB2”}|Set-MoveRequest –SuspendWhenReadytoCompleate
Чтобы продолжить передачу почтового ящика:
Get-MoveRequest | ? {$_.Batchname –like “*lonDB1tolonDB2”}|Resume-MoveRequest
Чтобы перенести все почтовые ящики с определенного сервера MBX, используйте команду:
Get-Mailbox -Server exlonmbx1 | New-MoveRequest -TargetDatabase nyDB2
Если в базе данных есть системные почтовые ящики, их необходимо передавать отдельно:
Get-Mailbox -Database lonDB1 -Arbitration | New-MoveRequest -TargetDatabase lonDB2
Вы можете перемещать несколько почтовых ящиков в пакетном режиме, используя файл CSV.
Для этого используйте командлет New-MigrationBatch (доступен в Exchange Server 2013, Exchange Server 2016, Exchange Server 2019, Exchange Online).
New-MigrationBatch -Local -AutoStart -AutoComplete -Name "lonDBMove01" -CSVData ([System.IO.File]::ReadAllBytes("C:\PS\lonDBMove01.csv")) -TargetDatabases lonDB2 -BadItemLimit 10
CSV-файл lonDBMove01.csv должен содержать список почтовых ящиков для перемещения (если вы хотите передать только архивный почтовый ящик, используйте параметр MailboxType – ArchiveOnly, если основной почтовый ящик – PrimaryOnly).