Usar PowerShell para mover buzones

Puede usar PowerShell para mover buzones, además del Centro de Administración de Exchange (EAC).

Mover buzones locales a una organización de Exchange Online

Para mover un buzón local a Exchange Online con PowerShell, siga estos pasos:

  1. Conéctese a PowerShell de Exchange Online: inicie PowerShell como administrador y conéctese a PowerShell de Exchange Online mediante la ejecución del siguiente comando:

    PS C:\> Connect-ExchangeOnline
    
  2. Buscar la dirección URL del servidor remoto del punto de conexión de migración: obtenga la dirección URL del servidor remoto mediante el cmdlet Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    Aparece la siguiente salida:

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

    Nota:

    El valor de RemoteServer en la salida de la sintaxis del comando anterior se genera mediante la ejecución del Asistente para configuración híbrida (HCW).

  3. Copie el valor de RemoteServer como lo necesite en la siguiente parte.

    Nota:

    El valor de RemoteServer que se muestra en la sintaxis del comando de salida anterior se genera cuando el usuario selecciona Usar topología híbrida moderna de Exchange en la página Topología híbrida .

  4. Crear una nueva solicitud de movimiento para mover los buzones principal y de archivo a Exchange Online con PowerShell

    • Rellene los detalles siguientes para crear una nueva solicitud de movimiento para mover el buzón principal y archivar el buzón a Exchange Online:

      • Identidad: nombre del buzón o dirección de correo electrónico.
      • RemoteHostName: el servidor remoto que copió en el paso 2.
      • TargetDeliveryDomain: dominio SMTP principal que se usa para los buzones de correo de la organización de Exchange Online.
      • RemoteCredential: cuenta de administrador local con privilegios.

      Después de ejecutar el comando, aparece una solicitud de inicio de sesión de credenciales.

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Rellene la contraseña de las credenciales locales (RemoteCredential).

  5. Mover varios buzones a Exchange Online con PowerShell

    • Cree un archivo CSV llamado Users.csv y colóquelo en el directorio C:\migration.

    • Abra el archivo CSV, asigne el nombre EmailAddress a la columna de encabezado y rellene todos los buzones que desee mover a Exchange Online.

      Captura de pantalla que muestra el CSV en el que se escriben los detalles de los buzones que se van a mover.

    • Copie el siguiente script y cambie las primeras 3 líneas. Después, ejecute el 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 el buzón principal solo a Exchange Online con PowerShell

    Hay un escenario en el que la ubicación del buzón de archivo está en Exchange Online y la ubicación del buzón principal está en Exchange local, y ejecuta el siguiente 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
    
       }
    

    El resultado es que recibe el siguiente mensaje de error, que forma parte de la sintaxis de comandos más grande que se muestra después del mensaje de error:

    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
    

    Cuando vea el mensaje de error, realice los pasos siguientes:

    • Agregue el -PrimaryOnly parámetro a la sintaxis de comando anterior para resolver el error al crear una nueva solicitud de movimiento para mover el buzón principal solo a Exchange Online.

    • Rellena los siguientes datos:

      • Identidad: nombre del buzón o dirección de correo electrónico.
      • RemoteHostName: el servidor remoto que copió en el paso 2.
      • PrimaryOnly: Mantener el valor vacío.
      • TargetDeliveryDomain: dominio SMTP principal que se usa para los buzones de correo de la organización de Exchange Online.
      • RemoteCredential: cuenta de administrador local con privilegios.

      Después de ejecutar el comando para una nueva solicitud de movimiento, se muestra una solicitud de inicio de sesión de credenciales, como se muestra en la siguiente sintaxis de comando:

      New-MoveRequest -Identity "Maisha.Lee@contoso.com" -Remote -RemoteHostName "mail.contoso.com" -PrimaryOnly -TargetDeliveryDomain "<domain>.mail.onmicrosoft.com" -RemoteCredential (Get-Credential)
      
    • Rellene la contraseña de las credenciales locales (RemoteCredential).

  7. Mover solo el buzón de archivo a Exchange Online con 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
    
    • Agregue el ArchiveOnly parámetro a la sintaxis de comando anterior para resolver el error al crear una nueva solicitud de movimiento para mover el buzón de archivo solo a Exchange Online.
    • Rellena los siguientes datos:
      • Identidad: nombre del buzón o dirección de correo electrónico.
      • RemoteHostName: el servidor remoto que copió en el paso 2.
      • ArchiveOnly: Mantener el valor vacío.
      • TargetDeliveryDomain: dominio SMTP principal que se usa para los buzones de correo de la organización de Exchange Online.
      • RemoteCredential: cuenta de administrador local con privilegios.

    Después de ejecutar el comando para una nueva solicitud de movimiento, aparece una solicitud de inicio de sesión de credenciales, como se muestra en la siguiente sintaxis de comando:

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

    Rellene la contraseña de las credenciales locales (RemoteCredential).

  8. Obtener el estado de movimiento del buzón

    • Obtenga el estado de la solicitud de movimiento del buzón mediante el cmdlet Get-MoveRequest .

      Get-MoveRequest -Identity "Maisha.Lee@contoso.com" | Get-MoveRequestStatistics
      
    • Ejecute el siguiente comando para obtener todas las solicitudes de movimiento del buzón:

      Get-MoveRequest | Get-MoveRequestStatistics
      

      La salida muestra el estado de movimiento del buzón como Estado completado , como se muestra en la siguiente captura de pantalla:

      Captura de pantalla que muestra el comando que permite al usuario obtener el estado de movimiento del buzón.

      Si ese no es el caso y no puede completar la solicitud de movimiento del buzón, puede suspender y reanudar la solicitud de movimiento.

Mover buzones de Exchange Online a una organización local

Para mover un buzón de correo de Exchange Online a la organización local mediante PowerShell, siga estos pasos:

  1. Conéctese a PowerShell de Exchange Online: inicie PowerShell como administrador y conéctese a PowerShell de Exchange Online mediante la ejecución del siguiente comando:

    PS C:\> Connect-ExchangeOnline
    

    Nota:

    No está extrayendo el buzón de Exchange Online a un entorno local. De hecho, está insertando el buzón de correo de Exchange Online a local. Por este motivo, necesita conectarse a Exchange Online y ejecutar los comandos desde PowerShell de Exchange Online.

  2. Buscar la dirección URL del servidor remoto del punto de conexión de migración: obtenga la dirección URL del servidor remoto mediante el cmdlet Get-MigrationEndpoint .

    Get-MigrationEndpoint | Format-List Identity, RemoteServer
    

    Aparece la siguiente salida:

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

    Nota:

    El valor de RemoteServer en la salida de la sintaxis del comando anterior se genera mediante la ejecución del Asistente para configuración híbrida (HCW).

  3. Copie el valor de la URL de RemoteServer como lo necesite en la siguiente parte.

  4. Crear una nueva solicitud de movimiento para mover buzones de correo principal y de archivo desde Exchange Online con PowerShell

    • Rellene los siguientes detalles como parte de la creación de una nueva solicitud de movimiento para mover el buzón principal y el buzón de archivo de Exchange Online:

      • Identidad: nombre del buzón o dirección de correo electrónico.
      • RemoteTargetDatabase: base de datos de buzones local de Exchange.
      • RemoteHostName: el servidor remoto que copió en el paso 2.
      • TargetDeliveryDomain: dominio SMTP principal que se usa para los buzones de correo de la organización de Exchange Online.
      • RemoteCredential: cuenta de administrador local con privilegios.

      El comando que se va a ejecutar para crear una nueva solicitud de movimiento es:

      New-MoveRequest -OutBound -RemoteTargetDatabase "DB01" -RemoteHostName "mail.contoso.com" -TargetDeliveryDomain "contoso.com" -RemoteCredential (Get-Credential)
      
    • Rellene la contraseña de las credenciales locales (RemoteCredential) para la solicitud de inicio de sesión de credenciales que se muestra como se muestra en la siguiente sintaxis de comando una vez que se ejecuta el comando:

      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
      

      Después de ejecutar el comando anterior que incluye la contraseña de las credenciales locales, pueden aparecer los siguientes errores:

      • No se encuentra un destinatario que tenga el GUID del buzón
      • Los GUID de archivo de los destinatarios de origen y destino no coinciden
  5. Mover solo el buzón principal de Exchange Online con PowerShell

    • Si las ubicaciones del buzón principal y del archivo se encuentran en Exchange Online y solo desea mover el buzón principal, agregue -PrimaryOnly y -ArchiveDomain parámetros al comando que ejecute para crear un nuevo movimiento y, en la sintaxis del comando, rellene los detalles siguientes:

      • Identidad: nombre del buzón o dirección de correo electrónico.
      • OutBound: Mantener el valor vacío.
      • RemoteTargetDatabase: base de datos de buzones local de Exchange.
      • RemoteHostName: el servidor remoto que copió en el paso 2.
      • PrimaryOnly: Mantener el valor vacío.
      • ArchiveDomain: dominio SMTP principal usado para los buzones de correo de la organización de Exchange Online.
      • TargetDeliveryDomain: dominio SMTP principal que se usa para los buzones de correo de la organización de Exchange Online.
      • RemoteCredential: cuenta de administrador local con privilegios.

      El comando que se va a ejecutar para crear una nueva solicitud de movimiento es:

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

      Después de ejecutar el comando, se muestra una solicitud de inicio de sesión de credenciales, como se muestra en la sintaxis de comando siguiente:

      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
      

      Rellene la contraseña de las credenciales locales (RemoteCredential).

  6. Obtener el estado de movimiento del buzón

    • Obtenga el estado de la solicitud de movimiento del buzón mediante el 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
      

      Se completa el movimiento del buzón. Si ese no es el caso y no puede completar la solicitud de movimiento del buzón, puede suspender y reanudar la solicitud de movimiento.

Para implementar el siguiente paso de eliminación de los lotes migrados completados, consulte Eliminación de lotes de migración completados.