Ir al contenido principal

Ejecutar una migración incremental en PowerShell

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

Puedes modificar tu script para realizar una segunda migración que copie solo los elementos más recientes desde el origen.

Detalles

Las actualizaciones incrementales en PowerShell son equivalentes a usar Copy if newer (incremental) en la configuración de copia de ShareGate Migrate.

El parámetro de actualización incremental copia solo los elementos de lista y documentos en tus listas y bibliotecas que sean más recientes que sus equivalentes en el destino.

Consejo: Te recomendamos leer el artículo Copy if newer (incremental) para entender cómo funciona la función y sus limitaciones antes de usar la configuración en tu script.

Cómo hacerlo

Para realizar una migración incremental, primero ejecuta una migración normal con PowerShell y luego vuelve a ejecutar la operación con un script modificado.

Para modificar tu script y ejecutar una copia incremental:

  1. Define tu configuración de copia para usar la copia incremental en una nueva variable agregando la siguiente línea al inicio de tu script:

    $copysettings = New-CopySettings -OnContentItemExists IncrementalUpdate
  2. Agrega -CopySettings $copysettings a tu línea de copia:

    Copy-Content -SourceList $srcList -DestinationList $dstList -CopySettings $copysettings

Nota: Puedes usar -CopySettings con los siguientes comandos: Copy-List, Copy-Site, Copy-Content, Import-Document, Import-GoogleDriveDocument y Import-BoxDocument.

Ejemplos

Aquí tienes dos ejemplos para ayudarte a entender cómo adaptar tu script para realizar una migración incremental.

Con un solo script de migración

Un script de Copy-Content usando copia incremental:

Import-Module Sharegate

# Define copy settings
$copysettings = New-CopySettings -OnContentItemExists IncrementalUpdate

# Connect to source and destination sites
$srcSite = Connect-Site -Url "http://myfarm1/sites/mysourcesite"
$dstSite = Connect-Site -Url "http://myfarm1/sites/mydestinationsite"

# Get source and destination lists
$srcList = Get-List -Name "mysrclist" -Site $srcSite
$dstList = Get-List -Name "mydstlist" -Site $dstSite

# Copy content from source list to destination list with copy settings
Copy-Content -SourceList $srcList -DestinationList $dstList -CopySettings $copysettings

Con un script de migración múltiple usando una instrucción foreach loop

Un script Import-Document con una instrucción foreach loop usando copia incremental:

Import-Module Sharegate

# Define CSV file path
$csvFile = "C:\MigrationPlanning\onedrivemigration.csv"

# Import CSV data into a table
$table = Import-Csv $csvFile -Delimiter ","

# Define your password
$mypassword = ConvertTo-SecureString 'mypassword' -AsPlainText -Force

# Set your migration to Incremental update.
$copysettings = New-CopySettings -OnContentItemExists IncrementalUpdate

# Set variables for destination site and list
Set-Variable -Name dstSite, dstList

# Loop through each row in the CSV
foreach ($row in $table) {
# Clear previous variables for destination site and list
Clear-Variable -Name dstSite -ErrorAction SilentlyContinue
Clear-Variable -Name dstList -ErrorAction SilentlyContinue

# Connect to the destination site and get destination list
$dstSite = Connect-Site -Url $row.ONEDRIVEURL -Username "myusername" -Password $mypassword
$dstList = Get-List -Name "Documents" -Site $dstSite

# Import documents from source folder to destination list with copy settings
Import-Document -SourceFolder $row.DIRECTORY -DestinationList $dstList -CopySettings $copysettings
}


"Este artículo fue traducido usando inteligencia artificial. Si tienes dudas, consulta la versión original en inglés."

¿Ha quedado contestada tu pregunta?