Compartilhar via


Utilizar o PowerShell para mover caixas de correio

Pode utilizar o PowerShell para mover caixas de correio, para além do Exchange Administração Center (EAC).

Mover caixas de correio no local para uma organização Exchange Online

Para mover uma caixa de correio no local para Exchange Online com o PowerShell, execute os seguintes passos:

  1. Ligar ao Exchange Online PowerShell: inicie o PowerShell como administrador e Ligue-se ao Exchange Online PowerShell ao executar o seguinte comando:

    PS C:\> Connect-ExchangeOnline
    
  2. Localizar o URL do servidor remoto do ponto final de migração: obtenha o URL do servidor remoto com o cmdlet Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    É apresentado o seguinte resultado:

    PS C:\> Get-MigrationEndpoint | Format-List Identity, RemoteServer
    
    Identity     : Hybrid Migration Endpoint - EWS (Default Web Site)
    RemoteServer : <GUID>.resource.mailboxmigration.his.msappproxy.net
    

    Observação

    O valor RemoteServer na saída da sintaxe do comando anterior é gerado através da execução do Assistente de Configuração Híbrida (HCW).

  3. Copie o valor RemoteServer conforme necessário na parte seguinte.

    Observação

    O valor do RemoteServer apresentado na sintaxe do comando de saída anterior é gerado quando o utilizador seleciona Utilizar Topologia Híbrida Moderna do Exchange na página Topologia Híbrida .

  4. Criar um novo pedido de movimentação para mover caixas de correio primárias e de arquivo para Exchange Online com o PowerShell

    • Preencha os seguintes detalhes para criar um novo pedido de movimentação para mover a caixa de correio principal e a caixa de correio de arquivo para Exchange Online:

      • Identidade: nome da caixa de correio ou endereço de e-mail.
      • RemoteHostName: o servidor remoto que copiou no Passo 2.
      • TargetDeliveryDomain: domínio SMTP principal utilizado para as caixas de correio da organização Exchange Online.
      • RemoteCredential: conta de administrador no local com privilégios.

      Depois de executar o comando, é apresentado um pedido de início de sessão de credenciais.

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Preencha a palavra-passe das credenciais no local (RemoteCredential).

  5. Mover várias caixas de correio para Exchange Online com o PowerShell

    • Crie um ficheiro CSV com o nome Users.csv e coloque-o no diretório C:\migration.

    • Abra o ficheiro CSV, atribua um nome à coluna de cabeçalho EmailAddress e preencha todas as caixas de correio que pretende mover para Exchange Online.

      Captura de ecrã que mostra o CSV no qual são introduzidos os detalhes das caixas de correio a mover.

    • Copie o seguinte script e altere as primeiras 3 linhas. Depois disso, execute o script.

      $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. Mover a caixa de correio principal apenas para Exchange Online com o PowerShell

    Existe um cenário em que a localização da caixa de correio de arquivo está em Exchange Online e a localização da caixa de correio principal está no Exchange no local e executa o seguinte comando:

    $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
    
       }
    

    O resultado é receber a seguinte mensagem de erro que faz parte da sintaxe de comando maior que é apresentada após a mensagem de erro:

    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
    

    Assim que vir a mensagem de erro, execute os seguintes passos:

    • Adicione o -PrimaryOnly parâmetro à sintaxe do comando anterior para resolve o erro quando criar um novo pedido de movimentação para mover a caixa de correio primária apenas para Exchange Online.

    • Preencha os seguintes detalhes:

      • Identidade: nome da caixa de correio ou endereço de e-mail.
      • RemoteHostName: o servidor remoto que copiou no Passo 2.
      • PrimaryOnly: mantenha o valor vazio.
      • TargetDeliveryDomain: domínio SMTP principal utilizado para as caixas de correio da organização Exchange Online.
      • RemoteCredential: conta de administrador no local com privilégios.

      Depois de executar o comando para um novo pedido de movimentação, é apresentado um pedido de início de sessão de credenciais, conforme mostrado na seguinte sintaxe de comando:

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Preencha a palavra-passe das credenciais no local (RemoteCredential).

  7. Mover apenas a caixa de correio de arquivo para Exchange Online com o 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
    
    • Adicione o ArchiveOnly parâmetro à sintaxe do comando anterior para resolve o erro quando criar um novo pedido de movimentação para mover a caixa de correio de arquivo apenas para Exchange Online.
    • Preencha os seguintes detalhes:
      • Identidade: nome da caixa de correio ou endereço de e-mail.
      • RemoteHostName: o servidor remoto que copiou no Passo 2.
      • ArchiveOnly: mantenha o valor vazio.
      • TargetDeliveryDomain: domínio SMTP principal utilizado para as caixas de correio da organização Exchange Online.
      • RemoteCredential: conta de administrador no local com privilégios.

    Depois de executar o comando para um novo pedido de movimentação, é apresentado um pedido de início de sessão de credenciais, conforme mostrado na seguinte sintaxe de comando:

    New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -ArchiveOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
    

    Preencha a palavra-passe das credenciais no local (RemoteCredential).

  8. Obter status de movimentação da caixa de correio

    • Obtenha a status do pedido de movimentação da caixa de correio com o cmdlet Get-MoveRequest.

      Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
      
    • Execute o seguinte comando para obter todos os pedidos de movimentação da caixa de correio:

      Get-MoveRequest | Get-MoveRequestStatistics
      

      O resultado mostra a status de movimentação da caixa de correio como Concluída status, conforme mostrado na seguinte captura de ecrã:

      Captura de ecrã a mostrar o comando que permite ao utilizador obter a movimentação da caixa de correio status.

      Se não for esse o caso e não conseguir concluir o pedido de movimentação da caixa de correio, pode suspender e retomar o pedido de movimentação.

Mover Exchange Online caixas de correio para uma organização no local

Para mover uma caixa de correio Exchange Online para a organização no local com o PowerShell, execute os seguintes passos:

  1. Ligar ao Exchange Online PowerShell: inicie o PowerShell como administrador e Ligue-se ao Exchange Online PowerShell ao executar o seguinte comando:

    PS C:\> Connect-ExchangeOnline
    

    Observação

    Não está a solicitar a caixa de correio Exchange Online para o local. Na verdade, está a enviar a caixa de correio Exchange Online para o local. É por isso que precisa de se ligar ao Exchange Online e executar os comandos a partir do Exchange Online PowerShell.

  2. Localizar o URL do servidor remoto do ponto final de migração: obtenha o URL do servidor remoto com o cmdlet Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    É apresentado o seguinte resultado:

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

    Observação

    O valor RemoteServer na saída da sintaxe do comando anterior é gerado através da execução do Assistente de Configuração Híbrida (HCW).

  3. Copie o valor do URL remoteServer conforme necessário na parte seguinte.

  4. Criar um novo pedido de movimentação para mover caixas de correio primárias e de arquivo de Exchange Online com o PowerShell

    • Preencha os seguintes detalhes como parte da criação de um novo pedido de movimentação para mover a caixa de correio principal e a caixa de correio de arquivo de Exchange Online:

      • Identidade: nome da caixa de correio ou endereço de e-mail.
      • RemoteTargetDatabase: base de dados de caixa de correio do Exchange no local.
      • RemoteHostName: o servidor remoto que copiou no Passo 2.
      • TargetDeliveryDomain: domínio SMTP principal utilizado para as caixas de correio da organização Exchange Online.
      • RemoteCredential: conta de administrador no local com privilégios.

      O comando a executar para criar um novo pedido de movimentação é:

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      
    • Preencha a palavra-passe das credenciais no local (RemoteCredential) para o pedido de início de sessão de credenciais que é apresentado conforme mostrado na seguinte sintaxe de comando quando o comando é executado:

      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
      

      Depois de executar o comando anterior que inclui a palavra-passe das credenciais no local, pode obter os seguintes erros:

      • Não é possível localizar um destinatário com GUID de caixa de correio
      • Os GUIDs de arquivo nos destinatários de origem e de destino não correspondem
  5. Mover apenas a caixa de correio principal do Exchange Online com o PowerShell

    • Se as localizações da caixa de correio principal e da caixa de correio de arquivo estiverem em Exchange Online e pretender mover apenas a caixa de correio principal, adicione -PrimaryOnly e -ArchiveDomain parâmetros ao comando que executar para criar um novo movimento e, na sintaxe do comando, preencha os seguintes detalhes:

      • Identidade: nome da caixa de correio ou endereço de e-mail.
      • Saída: mantenha o valor vazio.
      • RemoteTargetDatabase: base de dados de caixa de correio do Exchange no local.
      • RemoteHostName: o servidor remoto que copiou no Passo 2.
      • PrimaryOnly: mantenha o valor vazio.
      • ArchiveDomain: domínio SMTP principal utilizado para as caixas de correio Exchange Online organização.
      • TargetDeliveryDomain: domínio SMTP principal utilizado para as caixas de correio da organização Exchange Online.
      • RemoteCredential: conta de administrador no local com privilégios.

      O comando a executar para criar um novo pedido de movimentação é:

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -PrimaryOnly -ArchiveDomain "<domain>.mail.onmicrosoft.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      

      Depois de executar o comando, é apresentado um pedido de início de sessão de credenciais, conforme mostrado na seguinte sintaxe de comando:

      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
      

      Preencha a palavra-passe das credenciais no local (RemoteCredential).

  6. Obter status de movimentação da caixa de correio

    • Obtenha a status do pedido de movimentação da caixa de correio com o cmdlet 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
      

      A movimentação da caixa de correio é concluída. Se não for esse o caso e não conseguir concluir o pedido de movimentação da caixa de correio, pode suspender e retomar o pedido de movimentação.

Para implementar o próximo passo de remoção dos lotes migrados concluídos, veja Remover lotes de migração concluídos.