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:
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
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).
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 .
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).
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.
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 }
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).
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).
- Adicione o
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ã:
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:
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.
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).
Copie o valor do URL remoteServer conforme necessário na parte seguinte.
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
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).
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.