Поделиться через


Перемещение почтовых ящиков с помощью PowerShell

Вы можете использовать PowerShell для перемещения почтовых ящиков в дополнение к Центру Администратор Exchange (EAC).

Перемещение локальных почтовых ящиков в Exchange Online организацию

Чтобы переместить локальный почтовый ящик в Exchange Online с помощью PowerShell, выполните следующие действия.

  1. Подключение к Exchange Online PowerShell: запустите PowerShell от имени администратора и подключитесь к Exchange Online PowerShell, выполнив следующую команду:

    PS C:\> Connect-ExchangeOnline
    
  2. Поиск 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).

  3. Скопируйте значение RemoteServer по мере необходимости в следующей части.

    Примечание.

    Значение remoteServer , отображаемое в предыдущем синтаксисе команды выходных данных, создается, когда пользователь выбирает Использовать современную гибридную топологию Exchange на странице Гибридная топология .

  4. Создание запроса на перемещение для перемещения основных и архивных почтовых ящиков в 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).

  5. Перемещение нескольких почтовых ящиков в Exchange Online с помощью PowerShell

    • Создайте CSV-файл с именемUsers.csv и поместите его в каталог C:\migration.

    • Откройте CSV-файл, назовите столбец заголовка EmailAddress и заполните все почтовые ящики, которые вы хотите переместить в Exchange Online.

      Снимок экрана: CSV-файл, в котором вводятся сведения о перемещаемых почтовых ящиках.

    • Скопируйте следующий скрипт и измените первые 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
      
         }
      
  6. Перемещение основного почтового ящика только в 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).

  7. Перемещение только архивного почтового ящика в 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).

  8. Получение состояния перемещения почтового ящика

    • Получите состояние запроса на перемещение почтового ящика с помощью командлета Get-MoveRequest .

      Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
      
    • Выполните следующую команду, чтобы получить все запросы на перемещение почтового ящика:

      Get-MoveRequest | Get-MoveRequestStatistics
      

      В выходных данных отображается состояние перемещения почтового ящика как состояние Завершено , как показано на следующем снимке экрана:

      Снимок экрана: команда, которая позволяет пользователю получить состояние перемещения почтового ящика.

      Если это не так, и вы не можете выполнить запрос на перемещение почтового ящика, вы можете приостановить и возобновить запрос на перемещение.

Перемещение почтовых ящиков Exchange Online в локальную организацию

Чтобы переместить почтовый ящик Exchange Online в локальную организацию с помощью PowerShell, выполните следующие действия.

  1. Подключение к Exchange Online PowerShell: запустите PowerShell от имени администратора и подключитесь к Exchange Online PowerShell, выполнив следующую команду:

    PS C:\> Connect-ExchangeOnline
    

    Примечание.

    Вы не извлекаете почтовый ящик Exchange Online в локальную среду. Фактически вы отправляете почтовый ящик Exchange Online в локальную среду. Поэтому необходимо подключиться к Exchange Online и выполнить команды из Exchange Online PowerShell.

  2. Поиск URL-адреса удаленного сервера конечной точки миграции. Получите URL-адрес удаленного сервера с помощью командлета Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    Отобразятся следующие выходные данные:

    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : mail.contoso.com
    

    Примечание.

    Значение RemoteServer в выходных данных синтаксиса предыдущей команды создается при запуске мастера гибридной конфигурации (HCW).

  3. Скопируйте значение URL-адреса RemoteServer , если оно понадобится в следующей части.

  4. Создание запроса на перемещение для перемещения основных и архивных почтовых ящиков из 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 архива для исходных и целевых получателей не совпадают
  5. Перемещение только основного почтового ящика из 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).

  6. Получение состояния перемещения почтового ящика

    • Получите состояние запроса на перемещение почтового ящика с помощью командлета 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
      

      Перемещение почтового ящика завершается. Если это не так, и вы не можете выполнить запрос на перемещение почтового ящика, вы можете приостановить и возобновить запрос на перемещение.

Чтобы реализовать следующий шаг удаления завершенных перенесенных пакетов, см. раздел Удаление завершенных пакетов миграции.