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í.
This Post by David Solé Pérez is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License