Mover buzones de Microsoft Exchange 2003 a 2007 o 2010

Estimados lectores, ya sé que Exchange 2003 dejó de estar soportado por Microsoft el 8 de Abril de 2014 pero ¿cuántos quedan todavía en producción? No voy a inventar la rueda con mover buzones de Microsoft Exchange 2003 a 2007 o 2010, pues existen guías fabulosas con todo lujo de detalles que podemos usar para migrar las diferentes versiones de este servidor de correo empezando por las de los compañeros bloggers, aprovecho para mandarles un saludo, hasta las del propio fabricante.

De vez en cuando participo en los proyectos de migración de Microsoft Exchange y una de las fases más mecánicas del procedimiento, por así decirlo, es el movimiento de los buzones de usuario. A estas alturas sabemos qué quiere decir prescindir del servicio de correo aunque sean pocos minutos para cualquier usuario por lo que si estamos migrando de Exchange 2003 a 2007 o 2010 (para versiones superiores se requiere este primer salto) los buzones se transfieren offline; el usuario no puede usar su correo hasta que finalice la transferencia. Este punto debe ser especialmente tratado en la gestión del proyecto puesto que se deben coordinar muy bien los tiempos con los usuarios. En versiones superiores, a partir de 2007, los buzones ya se pueden mover en caliente.

Obviando las fases previas de preparación de esquemas y dominio, instalación del/los servidores Exchange 2010 con sus distintos roles, creación de las bases de datos (si son DAG o no), configuración de los accesos de cliente (si con CAS Array o no), etc. etc. lo primero que podemos hacer para migrar los buzones de usuario es obtener una lista de todos los existentes en el servidor Exchange 2003:

[PS] C:\>Get-Mailbox -Server Exchange2k3

Name                      Alias                ServerName       ProhibitSendQuota
----                      -----                ----------       -----------------
usr_backup                usr_backup           Exchange2k3         unlimited
besadmin                  besadmin             Exchange2k3         unlimited
Alberto, Juan             JuanA                Exchange2k3         unlimited
Gonzalez, Antonio         GonzalezA            Exchange2k3         unlimited
. . .

He olvidado mencionar que realizaremos la migración de los buzones usando la Exchange Management Shell la cual está basada en Microsoft PowerShell. Aunque es posible usar la consola de administración de Exchange 2010 cuando el número de buzones a migrar se cuenta por cientos o miles es mejor usar la línea de comandos, entre otras cosas para poder procesar lotes de migración y para minimizar errores (en organizaciones Exchange de grandes dimensiones se suelen utilizar nombres de bases de datos y servidores con códigos de área que pueden confundir, a veces solo cambia una letra).

Con la lista de buzones podemos generar un archivo de Excel que nos puede ayudar en su categorización; por ejemplo por departamentos, franjas horarias o por tipo de usuario (comercial, gerente, técnico, …). Esto nos tendría que ayudar a generar lotes de migración filtrando por esas categorías definidas evitando errores, recordemos que los usuarios no pueden usar el correo mientras su buzón se está moviendo. A partir de esta lista podemos construir nuestros lotes con el siguiente comando:

New-MoveRequest -Identity "Gonzalez, Antonio" -TargetDatabase "2K10DB01" -BadItemLimit 10

Con el comando lanzamos la petición de movimiento del buzón, nombre obtenido en el primer paso, hacia la base de datos del servidor de destino que no tiene por qué ser la misma para todos los usuarios donde especificamos, opcionalmente, un máximo de mensajes corruptos que dejaremos pasar antes de bloquear el movimiento de forma automática (especificando 10, si existen 11 mensajes corruptos el buzón no se moverá).

Podemos construir los comandos de forma ágil mediante el editor de texto Notepad++ usando expresiones regulares de reemplazo. Para cada lote de buzones podemos crear un pequeño script de extensión ps1 con la lista de peticiones de movimiento:

# Archivo lote_usuarios_ventas.ps1
# Migración usuarios de ventas
New-MoveRequest -Identity "Espinosa, Alberto" -TargetDatabase "2K10DB01" -BadItemLimit 10
New-MoveRequest -Identity "Valverde, Vanesa" -TargetDatabase "2K10DB01" -BadItemLimit 10
New-MoveRequest -Identity "Ramos, Juan" -TargetDatabase "2K10DB01" -BadItemLimit 10
New-MoveRequest -Identity "Sole, David" -TargetDatabase "2K10DB01" -BadItemLimit 10

Para ejecutar los lotes lanzaremos cada script de la siguiente forma:

[PS] C:\>.\lote_usuarios_ventas.ps1

Las líneas definidas en el script se activan a la vez aunque se encolan los movimientos ya que de forma predeterminada solamente se mueven 2 buzones a la vez (existe un procedimiento para cambiar el número de movimientos concurrentes). Podemos monitorizar el estado general de los movimientos con el siguiente comando:

[PS] C:\>Get-MoveRequest | sort

DisplayName                              Status                TargetDatabase
-----------                              ------                --------------
Espinosa, Alberto                       Completed                 2K10DB01
Ramos, Juan                             Completed                 2K10DB01
Sole, David                             Completed                 2K10DB01
Valverde, Vanesa                        Completed                 2K10DB01
. . .

En este caso utilizo el parámetro sort para que muestre los buzones por orden alfabético así me ayuda a organizar mi Excel marcando los usuarios movidos. Si necesitamos estadísticas concretas de un buzón podemos usar el siguiente:

[PS] C:\>Get-MoveRequestStatistics -Identity "Santacana, Pedro"

DisplayName               Status                    TotalMailboxSize          TotalArchiveSize         PercentComplete
-----------               ------                    ----------------          ----------------         ---------------
Santacana, Pedro          InProgress                158 MB (165,640,649 by...                          20

De esta forma nos podemos hacer una idea de cuánto tiempo puede tardar el movimiento de este buzón en concreto. Una vez finalizados todos los movimientos del lote y marcado como OK cada buzón en el archivo Excel podemos limpiar las peticiones de movimiento completadas para lanzar el siguiente lote (esto es opcional, yo lo hago así porque me organizo mejor):

[PS] C:\>Get-MoveRequest -MoveStatus Completed | Remove-MoveRequest

Confirm
Are you sure you want to perform this action?
Removing completed move request "Sole, David".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): A

Antes de finalizar esta entrada comentar que podemos usar el script que Microsoft pone a nuestra disposición en el directorio de instalación de Exchange:

C:\Program Files\Microsoft\Exchange Server\V14\Scripts\MoveMailbox.ps1

Este script nos ofrece muchas más opciones como usar comodines o condicionales. Podemos ver algunos ejemplos aquí.


Licencia de Creative Commons

This Post by David Solé Pérez is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

Pagina Principal

¿Te ha gustado este artículo? ¡Suscríbete!

Mover buzones de Microsoft Exchange 2003 a 2007 o 2010
5 (100%) 5 votos

Artículos Relacionados

David Solé Pérez

Autor: David Solé Pérez

Team Leading, Project Management, IT Consulting, Solutions Architect, Systems Integration & Deployment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *