El administrador de Exchange puede mover los buzones de correo de los usuarios en el bosque de Active Directory de una base de datos a otra entre servidores de Exchange o entre bases de datos de buzones en el mismo servidor a través de la interfaz web del Centro de administración de Exchange o la CLI de PowerShell. Considere cómo migrar buzones de correo entre bases de datos mediante PowerShell (EMS: Exchange Management Shell) en Exchange 2016/2013/2010.
Para mover el buzón de correo del usuario o del recurso de una base de datos a otra, debe crear una solicitud de movimiento (si la migración se produce dentro del mismo bosque de Active Directory, esto se denomina solicitud de movimiento local; si desea mover un buzón entre bosques de AD: esta es una solicitud de movimiento remoto). Para mover el buzón del usuario se usa el cmdlet New-MoveRequest.
Para crear una solicitud de movimiento local para el buzón de un usuario específico, ejecute el siguiente comando:
New-MoveRequest -Identity [email protected] -TargetDatabase lonDB2 -BadItemLimit 100
El parámetro TargetDatabase especifica el nombre de la base de datos de buzones a la que se debe mover el buzón. El parámetro BadItemLimit indica la cantidad de elementos dañados que se pueden omitir al mover un buzón. Si especifica BadItemLimit 0, significa que si hay elementos dañados en el buzón, la solicitud de movimiento finalizará con un error y el buzón permanecerá en la base de datos de Exchange de origen.
De forma predeterminada, si no especifica el parámetro BadItemLimit en el comando New-MoveRequest, su valor se establece en 0 y Microsoft recomienda enfáticamente no cambiarlo. Si especifica un valor BadItemLimit superior a 50, Microsoft propone utilizar un valor adicional AceptarLargeDataLoss parámetro.
Exchange mueve cajas con una prioridad nominal por defecto. Si desea aumentar la prioridad de una migración de buzón específica, agregue el parámetro -Priority High al final del comando New-MoveRequest.
Cuando el servicio de replicación de buzones (MRS) busca nuevas solicitudes de movimiento en la cola para procesarlas, primero procesa las solicitudes de movimiento por prioridad y luego por LastUpdatedTimeStamp.
Si el tamaño del buzón es bastante grande, puede moverse entre buzones durante bastante tiempo. Para realizar un seguimiento del porcentaje de migración de buzones, puede usar el cmdlet Get-MoveRequestStatistics. Por ejemplo, para obtener el estado de la transferencia del buzón [email protected], ejecute el comando:
Get-MoveRequestStatistics -Identity [email protected]
Presta atención a Porcentaje completo columna: indica el porcentaje de finalización de la tarea. El tamaño total del buzón se muestra en la Tamaño total del buzón columna.
Para verificar si el buzón del usuario ahora está en la nueva base de datos de buzones, ejecute el comando:
Get-Mailbox [email protected] | Format-List Database
Puede obtener las estadísticas de todas las solicitudes de movimiento de la siguiente manera:
Get-MoveRequest | Get-MoveRequestStatistics
Puede mover todos los buzones de una base de datos específica a otra base de datos. Para facilitar el seguimiento del estado de un movimiento, puede especificar el nombre de la tarea de movimiento por lotes (nombre de lote parámetro):
Get-Mailbox -Database lonDB1 | New-MoveRequest -BatchName "lonDB1tolonDB2” -TargetDatabase lonDB2 -Priority High -BadItemLimit 50 –AcceptLargeDataLoss
Los movimientos del buzón deben ponerse en cola en su servidor de Exchange.
El estado de la tarea de movimiento por lotes se puede obtener de la siguiente manera:
Get-MoveRequest -BatchName lonDB1tolonDB2 | Format-List DisplayName,Alias,Status,*database*
Puede suspender temporalmente la transferencia de buzones con el comando:
Get-MoveRequest | ? {$_.Batchname –like “*lonDB1tolonDB2”}|Set-MoveRequest –SuspendWhenReadytoCompleate
Para continuar con la ejecución de la transferencia del buzón:
Get-MoveRequest | ? {$_.Batchname –like “*lonDB1tolonDB2”}|Resume-MoveRequest
Si desea deshacer el movimiento del buzón de un usuario que ya está en la cola MoveRequet, use el cmdlet Remove-MoveRequest:
Remove-MoveRequest -Identity [email protected]
Además, no olvide borrar las solicitudes de movimiento completadas periódicamente con el comando:
Get-MoveRequest | where {$_.status -eq “Completed”} | Remove-MoveRequest
Si no hace esto, no podrá mover el buzón de correo del usuario, que está en la cola de solicitud de movimiento por segunda vez, incluso con el estado Completado.
Para migrar todos los buzones de un servidor MBX específico, use el comando:
Get-Mailbox -Server exlonmbx1 | New-MoveRequest -TargetDatabase nyDB2
Tenga en cuenta que la migración de varios buzones de usuario al mismo tiempo puede afectar el rendimiento del disco tanto del servidor de origen como del servidor Exchange de destino. Si necesita migrar todos los buzones de una base de datos de buzones a otra a la vez en modo automático (un buzón a la vez), puede usar el siguiente script de PowerShell:
$usrmbxs = Get-Mailbox -Database lonDB1; foreach ($mbx in $usrmbxs) { New-MoveRequest -Identity $mbx -TargetDatabase lonDB2; while ($(Get-MoveRequest -Identity $mbx.alias).status -ne ″completed″) { Start-Sleep 60; Get-MoverequestStatistics -Identity $mbx.alias } }
Si la base de datos tiene buzones de correo del sistema (Arbitraje, Archivo o carpeta pública buzones), deben transferirse por separado:
Get-Mailbox -Database lonDB1 -Arbitration | New-MoveRequest -TargetDatabase lonDB2 Get-Mailbox -Database lonDB1 -Archive | New-MoveRequest -TargetDatabase lonDB2 Get-Mailbox -Database lonDB1 -PublicFolder | New-MoveRequest -TargetDatabase lonDB2
Puede usar New-MoveRequest para migrar el buzón de correo a Exchange Online (el módulo MSOnline PowerShell debe estar instalado en su computadora):
$Creds= Get-Credential Connect-ExchangeOnline
New-MoveRequest -Identity "[email protected]" -Remote -RemoteHostName "MRS_Proxy_Endpint" -TargetDeliveryDomain theitbros.mail.onmicrosoft.com -RemoteCredential $Creds -BadItemLimit 10 –SuspendWhenReadytoComplete
Después de sincronizar el buzón con Exchange Online, puede completar manualmente la migración:
Get-MoveRequest | Where-Object Status -EQ AutoSuspended | Resume-Moverequest
Puede mover por lotes varios buzones mediante un archivo CSV. Para ello, use el cmdlet New-MigrationBatch (disponible en Exchange Server 2013, Exchange Server 2016, Exchange Server 2019 y Exchange Online).
New-MigrationBatch -Local -AutoStart -AutoComplete -Name "lonDBMove01" -CSVData ([System.IO.File]::ReadAllBytes("C:PSlonDBMove01.csv")) -TargetDatabases lonDB2 -BadItemLimit 10
El archivo CSV lonDBMove01.csv debe contener una lista de buzones de usuario para mover (si desea transferir solo el buzón de archivo, use el parámetro MailboxType—ArchiveOnly, si el buzón principal—PrimaryOnly).