Подготовка

Шаг 1. Создание новой базы ServiceDB

New-MailboxDatabase `
  -Name "ServiceDB" `
  -Server "EXCH01" `
  -EdbFilePath "D:\ServiceDB\ServiceDB.edb" `
  -LogFolderPath "E:\ServiceDB"
# Перезапускаем Information Store и монтируем базу
Restart-Service MSExchangeIS -Force
Mount-Database -Identity "ServiceDB"
# Проверяем статус
Get-MailboxDatabase -Identity "ServiceDB" | Format-List Name,Server,Recovery,Mounted

Шаг 3. Фильтрация и перенос сервисных ящиков

Все сервисные учётки находятся в OU «contoso.com/contoso/ServiceAccounts»

# Получаем список всех ящиков в данном OU
$svcMailboxes = Get-Mailbox -ResultSize Unlimited |
  Where-Object { $_.OrganizationalUnit -eq 'contoso.com/contoso/ServiceAccounts' }
# Отображаем выбранные ящики
$svcMailboxes | Select Name,DisplayName,Database,OrganizationalUnit | Format-Table -AutoSize

# Запускаем requests на перенос
foreach ($mb in $svcMailboxes) {
    New-MoveRequest `
      -Identity $mb.Identity `
      -TargetDatabase "ServiceDB" `
      -BadItemLimit 10
}

Шаг 4. Мониторинг и доработка

# 1) Перезапускаем службу миграции (MRS)
Restart-Service MSExchangeMailboxReplication

# 2) Возобновляем “застрявшие” запросы
Get-MoveRequest |
  Where-Object { $_.Status -in 'Queued','Suspended' } |
  Resume-MoveRequest

# 3) Слежение за прогрессом
Get-MoveRequest | Get-MoveRequestStatistics |
  Select Identity,Status,PercentComplete | Format-Table -AutoSize

# 4) Увеличиваем BadItemLimit при необходимости
Set-MoveRequest -Identity synology@contoso.com -BadItemLimit 100
Resume-MoveRequest -Identity synology@contoso.com

# 5) Удаляем завершённые запросы
Get-MoveRequest |
  Where-Object { $_.Status -eq 'Completed' } |
  Remove-MoveRequest

Шаг 5. Проверка и финальные настройки