Ir al contenido principal

Copiar varios buzones con PowerShell

Usa PowerShell para copiar varios buzones de Microsoft 365 en lotes a partir de un archivo de asignación.

Notas:

La integración con PowerShell requiere una suscripción Pro o Enterprise de ShareGate Migrate. No está disponible en el plan Essentials.

A finales de enero de 2026, Microsoft comenzó a retirar la cookie IDCRL, lo que significa que en la mayoría de los inquilinos de Microsoft 365 solo funcionarán los métodos de autenticación Browser y Modern authentication con los parámetros -Browser y -ModernAuth. Para obtener más información, consulta Cambio importante en la autenticación de "Other user" para Microsoft 365.

Usa PowerShell para copiar varios buzones de Microsoft 365 a partir de un archivo de asignación. Este enfoque te permite procesar los buzones en lotes y exportar un informe después de cada lote, lo que facilita la administración de tus migraciones de buzones más grandes.

Procedimiento

Para tu migración de buzones, necesitarás un archivo de asignación y un script de PowerShell que lea ese archivo para copiar los buzones en lotes.

Configura tu archivo de asignación

Tu archivo de asignación es un CSV que empareja cada buzón de origen con su destino. Configúralo antes de ejecutar la migración para revisar y ajustar las asignaciones.

Con PowerShell

Ejecuta el siguiente script para generar automáticamente tu archivo de asignación. ShareGate Migrate empareja los buzones de origen y destino por nombre para mostrar.

$source = Connect-MicrosoftOnline
$destination = Connect-MicrosoftOnline

Export-MailboxMappings -SourceConnection $source -DestinationConnection $destination -Path "C:\MyMappings\"

Actualiza "C:\MyMappings\" con la carpeta de tu unidad donde deseas guardar el archivo de asignación. Consulta Export-MailboxMappings para ver los parámetros disponibles.

Los buzones que no tienen coincidencia en el destino quedan en blanco en el CSV. Revisa el archivo y completa las asignaciones faltantes antes de continuar.

Desde ShareGate Migrate

  1. Sigue los pasos en Copy mailboxes - Mappings para configurar tu operación y llegar a la pantalla de asignación.

  2. Haz clic en el ícono Export mappings.

  3. Guarda el archivo CSV y anota su ruta.

Una vez que tengas tu archivo de asignación, ábrelo y confirma las asignaciones. Puedes editar el CSV para agregar, quitar o ajustar cualquier coincidencia de origen a destino antes de ejecutar la migración.

Crea tu script

Copia y pega el siguiente script en la aplicación de PowerShell que prefieras. Actualiza los valores de -Path en $mappings y $csv para que apunten al archivo de asignación que guardaste en la sección anterior.

$sourceConnection = Connect-MicrosoftOnline
$destinationConnection = Connect-MicrosoftOnline

$options = New-MailboxCopyOptions -IncludeEmails
$mappings = Import-MailboxMappings -SourceConnection $sourceConnection -DestinationConnection $destinationConnection -Path "C:\MyMappings\SharegateMailboxesMapping.csv"

$csv = Import-Csv -Path "C:\MyMappings\SharegateMailboxesMapping.csv"

# Initialize the starting index and the batch size
$index = 0
$batchSize = 16

while ($index -lt $csv.Count) {
# Select the current batch
$guids = $csv | Select-Object -Skip $index -First $batchSize -ExpandProperty "Source user id"

# Fetch the mailboxes
$mailboxes = Get-Mailbox -Id $guids -Connection $sourceConnection -AllowMultiple

# Copy the mailboxes
$result = Copy-Mailbox -SourceConnection $sourceConnection -DestinationConnection $destinationConnection -CopyOptions $options -MappingSettings $mappings -Mailboxes $mailboxes

# Export the report
Export-Report -SessionId $result.SessionId

# Increment index for next batch
$index += $batchSize
}

Ajusta el script para que funcione en tu entorno. Aquí tienes algunas pautas:

  • $sourceConnection y $destinationConnection: conéctate a tus inquilinos de Microsoft 365 de origen y destino. Consulta Connect-MicrosoftOnline para ver las opciones de autenticación.

  • $options: establece el contenido que se incluirá en la copia. Reemplaza -IncludeEmails por las opciones adecuadas para tu migración. Consulta New-MailboxCopyOptions para ver los parámetros disponibles.

  • $mappings y $csv: ambos deben apuntar al mismo archivo de asignación. Actualiza -Path y Import-Csv -Path para que coincidan con el archivo que guardaste en la sección anterior.

  • $batchSize: la cantidad de buzones que se procesan por lote. Comienza con 16 y ajusta el valor según el rendimiento de tu entorno.

  • $guids: extrae del CSV los ID de usuario de origen del lote actual.

  • $mailboxes: obtiene los objetos de buzón del lote actual. El parámetro -AllowMultiple es obligatorio cuando se pasa más de un ID. Consulta Get-Mailbox para obtener más información.

  • $result: contiene el resultado de la operación de copia, incluido el ID de sesión que usa Export-Report.

  • Export-Report: exporta el informe de migración de cada lote una vez que finaliza. Consulta Export-Report.

Ejecuta tu script una vez que lo hayas ajustado y probado correctamente.

Consideraciones

  • Modern authentication con -ModernAuth es el método de autenticación más seguro para Microsoft 365 y se puede usar con las variables Username y Password siempre que no se exija la autenticación multifactor (MFA). Consulta Connect-MicrosoftOnline para conocer las diferentes opciones de autenticación, o para cambiar a Browser authentication si es necesario.

  • Los informes de migración se generan por lote. El script exporta automáticamente el informe de cada lote con Export-Report.

  • Puedes programar tu migración con PowerShell para ejecutarla fuera del horario laboral y optimizar el rendimiento.

  • Para realizar una migración incremental, vuelve a ejecutar el script después de la copia inicial para sincronizar solo los elementos que se agregaron o modificaron desde la última ejecución.

  • Batch size: el tamaño de lote adecuado depende del tamaño de tus buzones y de las condiciones de red. Comienza con 16 y ajusta el valor según el rendimiento. Los lotes más pequeños son más fáciles de supervisar y solucionar si algo falla.

  • Script errors and testing: prueba tu script en un subconjunto pequeño de buzones antes de ejecutarlo en todo tu entorno. Las pruebas ayudan a identificar posibles problemas antes de que afecten a una gran cantidad de usuarios.

Este artículo fue traducido con inteligencia artificial. En caso de duda, consulta la versión original en inglés.

¿Ha quedado contestada tu pregunta?