Перемещение почтовых ящиков с помощью PowerShell
Вы можете использовать PowerShell для перемещения почтовых ящиков в дополнение к Центру Администратор Exchange (EAC).
Перемещение локальных почтовых ящиков в Exchange Online организацию
Чтобы переместить локальный почтовый ящик в Exchange Online с помощью PowerShell, выполните следующие действия.
Подключение к Exchange Online PowerShell: запустите PowerShell от имени администратора и подключитесь к Exchange Online PowerShell, выполнив следующую команду:
PS C:\> Connect-ExchangeOnline
Поиск URL-адреса удаленного сервера конечной точки миграции. Получите URL-адрес удаленного сервера с помощью командлета Get-MigrationEndpoint .
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Отобразятся следующие выходные данные:
PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
Примечание.
Значение RemoteServer в выходных данных синтаксиса предыдущей команды создается при запуске мастера гибридной конфигурации (HCW).
Скопируйте значение RemoteServer по мере необходимости в следующей части.
Примечание.
Значение remoteServer , отображаемое в предыдущем синтаксисе команды выходных данных, создается, когда пользователь выбирает Использовать современную гибридную топологию Exchange на странице Гибридная топология .
Создание запроса на перемещение для перемещения основных и архивных почтовых ящиков в Exchange Online с помощью PowerShell
Укажите следующие сведения, чтобы создать новый запрос на перемещение для перемещения основного почтового ящика и архивного почтового ящика в Exchange Online:
- Удостоверение: имя почтового ящика или адрес электронной почты.
- RemoteHostName: удаленный сервер, скопированный на шаге 2.
- TargetDeliveryDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- RemoteCredential: учетная запись локального администратора с привилегиями.
После выполнения команды отобразится запрос на вход с учетными данными.
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Введите пароль локальных учетных данных (RemoteCredential).
Перемещение нескольких почтовых ящиков в Exchange Online с помощью PowerShell
Создайте CSV-файл с именемUsers.csv и поместите его в каталог C:\migration.
Откройте CSV-файл, назовите столбец заголовка EmailAddress и заполните все почтовые ящики, которые вы хотите переместить в Exchange Online.
Скопируйте следующий скрипт и измените первые 3 строки. После этого запустите скрипт.
$Mailboxes = Import-Csv "C:\Migration\Users.csv" $RemoteHostName = "mail.contoso.com" $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com" $OnPremCred = (Get-Credential) # Move mailboxes in CSV file to Exchange Online foreach ($Mailbox in $Mailboxes) { $params = @{ Identity = $mailbox.EmailAddress Remote = $true RemoteHostName = $RemoteHostName TargetDeliveryDomain = $TargetDeliveryDomain RemoteCredential = $OnPremCred } New-MoveRequest @params }
Перемещение основного почтового ящика только в Exchange Online с помощью PowerShell
Существует сценарий, в котором расположение архивного почтового ящика находится в Exchange Online, а основное расположение почтового ящика находится в локальной среде Exchange, и вы выполняете следующую команду:
$Mailboxes = Import-Csv "C:\Migration\Users.csv" $RemoteHostName = "mail.contoso.com" $TargetDeliveryDomain = "<domain>.mail.onmicrosoft.com" $OnPremCred = (Get-Credential) # Move mailboxes in CSV file to Exchange Online foreach ($Mailbox in $Mailboxes) { $params = @{ Identity = $mailbox.EmailAddress Remote = $true RemoteHostName = $RemoteHostName TargetDeliveryDomain = $TargetDeliveryDomain RemoteCredential = $OnPremCred } New-MoveRequest @params }
В результате вы получите следующее сообщение об ошибке, которое является частью более крупного синтаксиса команды, отображаемого после сообщения об ошибке:
You must specify the PrimaryOnly parameter Target user ‘XXXXXX’ already has an archive mailbox.
PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential) You must specify the PrimaryOnly parameter. Target user 'Maisha Lee' already has an archive mailbox. + CategoryInfo : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022 7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management. Migration.MailboxReplication.MoveRequest.NewModernMoveRequest + PSComputerName : outlook.office365.com
Когда появится сообщение об ошибке, выполните следующие действия.
-PrimaryOnly
Добавьте параметр в синтаксис предыдущей команды, чтобы устранить ошибку при создании нового запроса на перемещение, чтобы переместить основной почтовый ящик только в Exchange Online.Укажите следующие сведения:
- Удостоверение: имя почтового ящика или адрес электронной почты.
- RemoteHostName: удаленный сервер, скопированный на шаге 2.
- PrimaryOnly: оставьте значение пустым.
- TargetDeliveryDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- RemoteCredential: учетная запись локального администратора с привилегиями.
После выполнения команды для нового запроса на перемещение отобразится запрос на вход с учетными данными, как показано в следующем синтаксисе команды:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Введите пароль локальных учетных данных (RemoteCredential).
Перемещение только архивного почтового ящика в Exchange Online с помощью PowerShell
PS C:\> New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential) You must specify the PrimaryOnly parameter. Target user 'Maisha Lee' already has an archive mailbox. + CategoryInfo : NotSpecified: (:) [New-MoveRequest], MailboxReplicationPermanentException + FullyQualifiedErrorId : [Server=PAXP190MB1743,RequestId=3f8179c3-aa93-453f-9e14-d824968f34c4,TimeStamp=5/28/2022 7:19:13 AM] [FailureCategory=Cmdlet-MailboxReplicationPermanentException] FE8B9422,Microsoft.Exchange.Management. Migration.MailboxReplication.MoveRequest.NewModernMoveRequest + PSComputerName : outlook.office365.com
-
ArchiveOnly
Добавьте параметр в синтаксис предыдущей команды, чтобы устранить ошибку при создании нового запроса на перемещение, чтобы переместить архивный почтовый ящик только в Exchange Online. - Укажите следующие сведения:
- Удостоверение: имя почтового ящика или адрес электронной почты.
- RemoteHostName: удаленный сервер, скопированный на шаге 2.
- ArchiveOnly: оставьте значение пустым.
- TargetDeliveryDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- RemoteCredential: учетная запись локального администратора с привилегиями.
После выполнения команды для нового запроса на перемещение отобразится запрос на вход с учетными данными, как показано в следующем синтаксисе команды:
New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
Введите пароль локальных учетных данных (RemoteCredential).
-
Получение состояния перемещения почтового ящика
Получите состояние запроса на перемещение почтового ящика с помощью командлета Get-MoveRequest .
Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
Выполните следующую команду, чтобы получить все запросы на перемещение почтового ящика:
Get-MoveRequest | Get-MoveRequestStatistics
В выходных данных отображается состояние перемещения почтового ящика как состояние Завершено , как показано на следующем снимке экрана:
Если это не так, и вы не можете выполнить запрос на перемещение почтового ящика, вы можете приостановить и возобновить запрос на перемещение.
Перемещение почтовых ящиков Exchange Online в локальную организацию
Чтобы переместить почтовый ящик Exchange Online в локальную организацию с помощью PowerShell, выполните следующие действия.
Подключение к Exchange Online PowerShell: запустите PowerShell от имени администратора и подключитесь к Exchange Online PowerShell, выполнив следующую команду:
PS C:\> Connect-ExchangeOnline
Примечание.
Вы не извлекаете почтовый ящик Exchange Online в локальную среду. Фактически вы отправляете почтовый ящик Exchange Online в локальную среду. Поэтому необходимо подключиться к Exchange Online и выполнить команды из Exchange Online PowerShell.
Поиск URL-адреса удаленного сервера конечной точки миграции. Получите URL-адрес удаленного сервера с помощью командлета Get-MigrationEndpoint .
Get-MigrationEndpoint | Format-List Identity, RemoteServer
Отобразятся следующие выходные данные:
Identity : Hybrid Migration Endpoint - EWS (Default Web Site) RemoteServer : mail.contoso.com
Примечание.
Значение RemoteServer в выходных данных синтаксиса предыдущей команды создается при запуске мастера гибридной конфигурации (HCW).
Скопируйте значение URL-адреса RemoteServer , если оно понадобится в следующей части.
Создание запроса на перемещение для перемещения основных и архивных почтовых ящиков из Exchange Online с помощью PowerShell
При создании запроса на перемещение укажите следующие сведения, чтобы переместить основной почтовый ящик и архивный почтовый ящик из Exchange Online:
- Удостоверение: имя почтового ящика или адрес электронной почты.
- RemoteTargetDatabase: локальная база данных почтовых ящиков Exchange.
- RemoteHostName: удаленный сервер, скопированный на шаге 2.
- TargetDeliveryDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- RemoteCredential: учетная запись локального администратора с привилегиями.
Команда, выполняемая для создания нового запроса на перемещение:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
Введите пароль локальных учетных данных (RemoteCredential) для запроса на вход с учетными данными, который отображается, как показано в следующем синтаксисе команды после выполнения команды:
PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator) DisplayName Status TargetDatabase ----------- ------ -------------- Jordy Twin Queued
После выполнения предыдущей команды, которая включает пароль локальных учетных данных, вы можете получить следующие ошибки:
- Не удается найти получателя с GUID почтового ящика
- Идентификаторы GUID архива для исходных и целевых получателей не совпадают
Перемещение только основного почтового ящика из Exchange Online с помощью PowerShell
Если расположение основного почтового ящика и архивного почтовых ящиков находятся в Exchange Online и вы хотите переместить только основной почтовый ящик, добавьте
-PrimaryOnly
параметры и-ArchiveDomain
в команду, которую вы выполняете, чтобы создать новое перемещение, и в синтаксисе команды укажите следующие сведения:- Удостоверение: имя почтового ящика или адрес электронной почты.
- Исходящий трафик: оставьте значение пустым.
- RemoteTargetDatabase: локальная база данных почтовых ящиков Exchange.
- RemoteHostName: удаленный сервер, скопированный на шаге 2.
- PrimaryOnly: оставьте значение пустым.
- ArchiveDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- TargetDeliveryDomain: основной домен SMTP, используемый для почтовых ящиков организации Exchange Online.
- RemoteCredential: учетная запись локального администратора с привилегиями.
Команда, выполняемая для создания нового запроса на перемещение:
New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
После выполнения команды отобразится запрос на вход с учетными данными, как показано в следующем синтаксисе команды:
PS C:\> Get-Mailbox -Identity "Jordy.Twin@contoso.com" | New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential exoip\administrator) DisplayName Status TargetDatabase ----------- ------ -------------- Jordy Twin Queued
Введите пароль локальных учетных данных (RemoteCredential).
Получение состояния перемещения почтового ящика
Получите состояние запроса на перемещение почтового ящика с помощью командлета Get-MoveRequest .
PS C:\> Get-MoveRequest -Identity "Jordy.Twin@contoso.com" | Get-MoveRequestStatistics | ft DisplayName,StatusDetail,TotalMailboxSize,TotalArchiveSize,PercentComplete DisplayName StatusDetail TotalMailboxSize TotalArchiveSize PercentComplete ----------- ------------ ---------------- ---------------- --------------- Jordy Twin Completed 231.6 MB (242,877,775 bytes) 0 B (0 bytes) 100
Перемещение почтового ящика завершается. Если это не так, и вы не можете выполнить запрос на перемещение почтового ящика, вы можете приостановить и возобновить запрос на перемещение.
Чтобы реализовать следующий шаг удаления завершенных перенесенных пакетов, см. раздел Удаление завершенных пакетов миграции.