Preparar a caixas de correio para movimentações entre florestas usando o Shell de gerenciamento do Exchange

Exchange Server dá suporte a movimentações e migrações de caixa de correio usando os cmdlets New-MoveRequest e New-MigrationBatch do Shell do Exchange Management. Você também pode mover a caixa de correio no Centro de administração do Exchange (EAC).

  • No Exchange 2016, você pode mover uma caixa de correio exchange 2010, Exchange 2013 ou Exchange 2016 de uma floresta exchange de origem para uma floresta de destino do Exchange 2016.

  • No Exchange 2019, você pode mover uma caixa de correio exchange 2013, Exchange 2016 ou Exchange 2019 de uma floresta exchange de origem para uma floresta de destino do Exchange 2019.

Para executar os cmdlets New-MoveRequest e New-MigrationBatch, um usuário de email deve existir na floresta de destino do Exchange e deve ter um conjunto mínimo de atributos necessários do Active Directory.

O exemplo de script do Exchange PowerShell descrito neste tópico dá suporte a essa tarefa sincronizando usuários de caixas de correio de uma floresta de origem do Exchange para florestas de destino do Exchange como usuários de email (também conhecidos como usuários habilitados para email). O script copia os atributos do Active Directory dos usuários da caixa de correio na floresta de origem para a floresta de destino e usa o cmdlet Update-Recipient para transformar os objetos de destino em usuários de email.

Para obter mais informações sobre como usar e escrever scripts, consulte Sobre scripts. Para mais informações sobre a preparação de movimentações entre florestas, consulte Preparar a caixas de correio para solicitações de movimentação entre florestas.

Procurando outras tarefas de gerenciamento relacionadas a solicitações de movimentação remota? Confira Gerenciar movimentos de caixa de correio locais no Exchange Server.

Do que você precisa saber para começar?

  • Localize o script Prepare-MoveRequest.ps1 em %ExchangeInstallPath%Scripts. Por padrão, %ExchangeInstallPath% é C:\Program Files\Microsoft\Exchange Server\V15\ (observe o seguinte '\').

  • Para executar o script de exemplo, você precisa do seguinte:

    • Uma floresta de origem do Exchange (onde a caixa de correio reside atualmente).

      • Para florestas de destino do Exchange 2016, a caixa de correio de origem pode estar no Exchange 2010, Exchange 2013 ou Exchange 2016.

      • Para florestas de destino do Exchange 2019, a caixa de correio de origem pode estar no Exchange 2013, Exchange 2016 ou Exchange 2019.

    • Uma floresta de destino com o Exchange 2016 ou Exchange 2019 instalado (para onde a caixa de correio será movida).

Dica

Está com problemas? Peça ajuda nos fóruns do Exchange. Visite os fóruns em: Exchange Server, Exchange Online ou Proteção do Exchange Online.

Usar o script Prepare-MoveRequest.ps1 a fim de preparar caixas de correio para movimentações entre florestas

Execute o script do Shell de Gerenciamento do Exchange em um servidor de caixa de correio na floresta exchange 2016 ou Exchange 2019 de destino. O script copia os atributos de caixa de correio da floresta de origem.

Para atribuir uma credencial de autenticação específica para o controlador de domínio de floresta remota, você deve primeiro executar o cmdlet Get-Credential do PowerShell Windows e armazenar a entrada do usuário em uma variável temporária. Quando você executar o cmdlet Get-Credential, ele solicitará o nome do usuário e a senha da conta usada durante a autenticação com o controlador de domínio de floresta remota. Você pode então usar a variável temporária no script Prepare-MoveRequest.ps1. Para mais informações sobre o cmdlet Get-Credential, consulte Get-Credential.

Observação

Certifique-se de usar duas credenciais separadas para a floresta local e a floresta remota ao chamar esse script.

  1. Execute os seguintes comandos para obter as credenciais de floresta local e floresta remota.

    $LocalCredentials = Get-Credential
    
    $RemoteCredentials = Get-Credential
    
  2. Em seguida, execute os seguintes comandos para passar as informações de credenciais aos parâmetros LocalForestCredential e RemoteForestCredential no script Prepare-MoveRequest.ps1.

    Prepare-MoveRequest.ps1 -Identity JohnSmith@Fabrikan.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials
    

Conjunto de parâmetros do script

A tabela a seguir descreve o parâmetro definido para o script.

Parâmetro Obrigatório Descrição
Identidade Obrigatório O parâmetro Identity identifica exclusivamente uma caixa de correio na floresta de origem. A identidade pode ser qualquer um dos seguintes valores: nome comum (CN), Alias, propriedade proxyAddress, propriedade objectGuid ou propriedade DisplayName
RemoteForestCredential Obrigatório O parâmetro RemoteForestCredential especifica o administrador que tem permissões para copiar dados do Active Directory da floresta de origem.
RemoteForestDomainController Obrigatório O parâmetro RemoteForestDomainController especifica o controlador de domínio na floresta de origem em que reside a caixa de correio.
DisableEmailAddressPolicy Opcional O parâmetro DisableEmailAddressPolicy especifica se a Política de Endereço de Email (EAP) deve ser desabilitada ao se criar um objeto MailUser na floresta de destino.
Quando você especificar esse parâmetro, o EAP na floresta de destino não será aplicado.
Observação: quando você especificar esse parâmetro, o objeto MailUser não terá o mapeamento de endereço de email no domínio da floresta local carimbado. Isso costuma ser carimbado pelo EAP.
LinkedMailUser Opcional O switch LinkedMailUser especifica se deve ser criado um MailUser vinculado na floresta local para o usuário de caixa de correio na floresta remota.
Se o switch for fornecido, o script criará um objeto MailUser de destino vinculado à caixa de correio de origem. Se o switch é omitido, o script criará um objeto MailUser regular de destino.
LocalForestCredential Opcional O parâmetro LocalForestCredential especifica o administrador com permissões para gravar dados na floresta de destino Active Directory.
Recomendamos que você especifique explicitamente esse parâmetro para evitar problemas de permissão do Active Directory.
Se a floresta remota e a floresta local tiverem uma relação confiável configurada, não use uma conta de usuário da floresta remota como credencial de floresta local, embora a conta de usuário remota possa ter permissão para modificar o Active Directory na floresta local.
LocalForestDomainController Opcional O parâmetro LocalForestDomainController especifica um controlador de domínio na floresta de destino em que o usuário de email será criado.
Recomendamos que você especifique esse parâmetro para evitar possíveis problemas de atraso na replicação do controlador de domínio na floresta local que podem ocorrer caso um controlador de domínio aleatório seja selecionado.
MailboxDeliveryDomain Opcional O parâmetro MailboxDeliveryDomain especifica um domínio autoritativo da floresta de origem para que o script possa selecionar a propriedade proxyAddress do usuário da caixa de correio de origem correta como a propriedade targetAddress do usuário de email de destino.
Por padrão, o endereço SMTP primário do usuário da caixa de correio de origem é definido como a propriedade targetAddress do usuário de email de destino.
OverWriteLocalObject Opcional O parâmetro OverWriteLocalObject é usado para usuários criados pela Ferramenta de Migração do Active Directory. As propriedades são copiadas do contato de email existente para o usuário de email recém-criado. Porém, após essa cópia, o script também copia as propriedades do usuário de floresta de origem para o usuário de email recém-criado.
TargetMailUserOU Opcional O parâmetro TargetMailuserOU especifica a OU (unidade organizacional) sob a qual o usuário de email de destino será criado.
UseLocalObject Opcional O parâmetro UseLocalObject especifica se deve converter o objeto local existente no usuário de email de destino necessário se o script detectar um objeto na floresta local que entra em conflito com o usuário de email a ser criado.

Exemplos

Esta seção contém vários exemplos de como você pode usar o script Prepare-MoveRequest.ps1.

Exemplo: usuário de email vinculado único

Este exemplo provisiona um único usuário de email vinculado na floresta local, quando há confiança florestal entre a floresta remota e a floresta local.

  1. Execute os seguintes comandos para obter as credenciais de floresta local e floresta remota.

    $LocalCredentials = Get-Credential
    
    $RemoteCredentials = Get-Credential
    
  2. Depois, execute o seguinte comando para passar as informações de credenciais aos parâmetros LocalForestCredential e RemoteForestCredential no script Prepare-MoveRequest.ps1.

    Prepare-MoveRequest.ps1 -Identity JamesAlvord@Contoso.com -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $RemoteCredentials -LocalForestDomainController DC001.Contoso.com -LocalForestCredential $LocalCredentials -LinkedMailUser
    

Exemplo: Pipelining

Este exemplo suporta pipelining caso você forneça uma lista de identidades de caixa de correio.

  1. Execute o seguinte comando:

    $UserCredentials = Get-Credential
    
  2. Execute o comando a seguir para passar as informações de credencial para o parâmetro RemoteForestCredential no script Prepare-MoveRequest.ps1.

    "IanP@Contoso.com", "JoeAn@Contoso.com" | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

Exemplo: usar um arquivo .csv para criar usuários de email em massa

Você pode gerar um arquivo .csv que contém uma lista de identidades de caixa de correio da floresta de origem, o que permite que você pipe o conteúdo deste arquivo no script para criar em massa os usuários de email de destino.

Por exemplo, o conteúdo do arquivo .csv pode ser:

Identity
Ian@contoso.com
John@contoso.com
Cindy@contoso.com

Este exemplo chama um arquivo .csv para criar em massa os usuários de email de destino.

  1. Execute o seguinte comando para obter as credenciais de floresta remota.

    $UserCredentials = Get-Credential
    
  2. Execute o seguinte comando para passar as informações de credenciais ao parâmetro RemoteForestCredential no script Prepare-MoveRequest.ps1.

    Import-Csv Test.csv | Prepare-MoveRequest.ps1 -RemoteForestDomainController DC001.Fabrikam.com -RemoteForestCredential $UserCredentials
    

Comportamento do script por objeto de destino

Esta seção descreve como o script se comporta em relação aos vários cenários para objetos de destino.

Objeto de destino habilitado para email duplicado

Quando o script tenta criar um usuário de email de destino do usuário da caixa de correio de origem e detecta um objeto local habilitado para email duplicado, ele usa a seguinte lógica:

  • Se o atributo masterAccountSid do usuário da caixa de correio de origem for igual a qualquer atributo objectSid ou masterAccountSid do objeto de destino:

    • Se o objeto de destino não estiver habilitado para email, o script retornará um erro porque o script não dá suporte à conversão de um objeto que não está habilitado para email em um usuário de email.

    • Se o objeto de destino for habilitado para email, o objeto de destino é uma cópia.

  • Se um endereço nas propriedades proxyAddress (smtp/x500 somente) de usuário de caixa de correio de origem for igual a um endereço nas propriedades proxyAddress (smtp/x500 somente) de objeto de destino, então o objeto de destino é uma cópia.

O script informa o usuário sobre objetos duplicados.

Se o objeto habilitado para email de destino for um usuário de email ou um contato de email, que provavelmente será criado por uma implantação de sincronização gal (lista de endereços global) entre florestas, você poderá executar o script novamente com o parâmetro UseLocalObject para usar o objeto habilitado para email de destino para migração de caixa de correio.

Usuário de email

Se o objeto de destino for um usuário de email, o script copiará os seguintes atributos do usuário da caixa de correio de origem para o usuário de email de destino:

  • msExchMailboxGUID

  • msExchArchiveGUID

  • msExchArchiveName

Se o parâmetro LinkedMailUser for definido, o script copiará o atributomasterAccountSiddo objectSid / de origem.

Contato de email

Se o objeto de destino for um contato por email, o script excluirá o contato existente e copiará todos os seus atributos para um novo usuário de email. O script também copia os seguintes atributos de um usuário de caixa de correio de origem:

  • msExchMailboxGUID

  • msExchArchiveGUID

  • msExchArchiveName

  • Samaccountname

  • userAccountControl (definido como 514; equivalente a 0x202, ACCOUNTDISABLE | NORMAL_ACCOUNT)

  • userPrincipalName

Se o parâmetro LinkedMailUser for definido, o script copiará o atributomasterAccountSiddo objectSid / de origem.

Atributo LegacyExchangeDN

Quando o cmdlet Update-Recipient é chamado para converter o objeto de destino em um usuário de email, um novo atributo LegacyExchangeDN é gerado para o usuário de email de destino. O script copia o atributo LegacyExchangeDN do usuário de email de destino como um endereço x500 para as propriedades proxyAddress do usuário da caixa de correio de origem.