Compartir a través de


Migrar a SharePoint con PowerShell

Este artículo trata sobre los nuevos cmdlets de PowerShell basados en el motor de migración de la Herramienta de migración de SharePoint (SPMT). Se pueden usar para mover archivos de SharePoint 2010 y SharePoint 2013 bibliotecas de documentos locales y elementos de lista, y recursos compartidos de archivos a Microsoft 365. Para obtener información sobre todos los cmdlets de PowerShell actuales relacionados con la migración de SharePoint, consulte la referencia de cmdlets de microsoft SharePoint Migration Tool.

Los cmdlets de PowerShell proporcionan las mismas funcionalidades que la Herramienta de migración de SharePoint.

Nota:

Estos cmdlets de PowerShell no están disponibles actualmente para los usuarios de Office 365 operados por 21Vianet en China.

Requisitos del sistema

Descripción Recomendación
CPU Procesador de cuatro núcleos de 64 bits o superior
RAM 16 GB
Almacenamiento local Disco duro: 150 GB de espacio disponible
Sistema operativo Windows Server 2016 Standard o Datacenter
Windows Server 2012 R2
Windows 10 cliente
.NET Framework 4.6.2
Componente redistribuible de Microsoft Visual C++ 2015 Se necesita para la migración de OneNote.

Importante

PowerShell 5.0x y .NET Framework 4.6.2 o posterior son necesarios para admitir la migración de rutas de acceso de archivo de hasta 400 caracteres.

Requisitos mínimos (es de esperar un rendimiento lento)

Descripción Requisito mínimo
CPU Procesador de dos núcleos a 1,4 GHz de 64 bits o superior
RAM 8 GB
Almacenamiento local Disco duro: 150 GB de espacio disponible
Tarjeta de red Conexión a Internet de alta velocidad
Sistema operativo Windows Server 2008 R2
Windows 7
Windows 8 o 8.1
.NET Framework 4.6.2
Componente redistribuible de Microsoft Visual C++ 2015 Se necesita para la migración de OneNote.
PowerShell PowerShell 5.x es necesario para admitir la migración de rutas de acceso de archivo de hasta 400 caracteres. No se admite PowerShell 6.0 o posterior.

Solución alternativa para el problema de ruta de acceso larga

Cuando se usa SPMT PowerShell, es posible que se produzcan errores de examen en archivos de origen con rutas de acceso de más de 260 caracteres. Para resolver este problema, puede modificar el Registro del sistema para permitir que PowerShell lea archivos de ruta de acceso largas.

Abra Registrar Editor, vaya a "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework", agregue una nueva clave "AppContext". A continuación, agregue 2 valores de cadena en la clave.

  • Nombre del valor: Switch.System.IO.BlockLongPaths Datos de valor: false

  • Nombre del valor: Switch.System.IO.UseLegacyPathHandling Datos de valor: false

Antes de empezar

  1. Aprovisione Microsoft 365 con active directory existente o con una de las otras opciones para agregar cuentas a Microsoft 365. Para obtener más información, consulte Integración de Microsoft 365 con entornos locales y Agregar usuarios a Aplicaciones Microsoft 365 para negocios.

  2. Abra la carpeta : $env:UserProfile\Documents\WindowsPowerShell\Modules\Microsoft.SharePoint.MigrationTool.PowerShell. Asegúrese de que tiene archivos DLL dentro de él. Si usa OneDrive, debe copiar la carpeta de WindowsPowershell en $env:UserProfile\OneDrive - Microsoft\Documents.

  3. Desde esta ubicación, ejecute el siguiente comando de PowerShell:

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Crear e inicializar una sesión de migración

Este cmdlet crea y, a continuación, inicializa una sesión de migración. La inicialización configura los valores de migración en el nivel de sesión. Si no se define ningún parámetro de configuración específico, se usa la configuración predeterminada. Una vez registrada una sesión, puede agregar una tarea a la sesión e iniciar la migración.

Agregar una tarea de migración

Use este cmdlet para agregar una nueva tarea de migración a la sesión de migración registrada. Actualmente, se permiten tres tipos diferentes de tareas: tarea recurso compartido de archivos, tarea de SharePoint y tarea definida por JSON. Nota: No se permiten tareas duplicadas.

Quitar una tarea

Use este cmdlet para quitar una tarea de migración existente de la migración registrada.

Iniciar la migración

Este cmdlet inicia la migración de SPMT registrada.

Devolver el objeto de la sesión actual

Devuelve el objeto de la sesión actual. Este cmdlet incluye el estado de las tareas actuales y la configuración actual del nivel de sesión. El estado actual de la tarea incluye:

S: recuento de archivos escaneados

  • Número de archivos migrados
    • Los mensajes de error de migración

Detener la migración actual

Este cmdlet cancela la migración actual.

Mostrar la información de estado de la migración en la consola

Si inicia la migración en modo NoShow , al ejecutar el cmdlet Show-SPMTMigration se muestra el identificador de tarea, la ubicación del origen de datos, la ubicación de destino y el estado de la migración en la consola. Al seleccionar Ctrl+C, la pantalla se devuelve al modo NoShow .

Eliminar la sesión de migración

Use este cmdlet para eliminar la sesión de migración.

Ejemplos de escenarios

Ejemplo 1: El administrador de TI agrega una tarea local de SharePoint e inicia la migración en segundo plano.

#Define SharePoint 2013 data source#
$SourceSiteUrl = "http://YourOnPremSite/"
$OnPremUserName = "Yourcomputer\administrator"
$OnPremPassword = ConvertTo-SecureString -String "OnPremPassword" -AsPlainText -Force
$SPCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $OnPremUserName, $OnPremPassword
$SourceListName = "SourceListName"

#Define SharePoint target#
$SPOUrl = "https://contoso.sharepoint.com"
$UserName = "admin@contoso.onmicrosoft.com"
$PassWord = ConvertTo-SecureString -String "YourSPOPassword" -AsPlainText -Force
$SPOCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $PassWord
$TargetListName = "TargetListName"

#Define File Share data source#
$FileshareSource = "YourFileShareDataSource"

#Import SPMT Migration Module#
Import-Module Microsoft.SharePoint.MigrationTool.PowerShell

#Register the SPMT session with SharePoint credentials#
Register-SPMTMigration -SPOCredential $SPOCredential -Force

#Add two tasks into the session. One is SharePoint migration task, and another is File Share migration task.#
Add-SPMTTask -SharePointSourceCredential $SPCredential -SharePointSourceSiteUrl $SourceSiteUrl  -TargetSiteUrl $SPOUrl -MigrateAll
Add-SPMTTask -FileShareSource $FileshareSource -TargetSiteUrl $SPOUrl -TargetList $TargetListName

#Start Migration in the console. #
Start-SPMTMigration

Ejemplo 2: El administrador de TI quiere llevar la migración desde el "modo NoShow" en segundo plano y ejecutarla debajo del cmdlet para que el progreso de la migración se muestre en la consola.

Show-SPMTMigration

Ejemplo 3: El Administración de TI quiere realizar una migración masiva cargando un archivo .csv. El archivo de muestra en este ejemplo es SPMT.csv.

Load CSV;
$csvItems = import-csv "C:\spmt.csv" -Header c1,c2,c3,c4,c5,c6
ForEach ($item in $csvItems)
{
    Write-Host $item.c1
    Add-SPMTTask -FileShareSource $item.c1 -TargetSiteUrl $item.c4 -TargetList $item.c5 -TargetListRelativePath $item.c6
}

Hay dos tareas de migración definidas en el archivo de spmt.csv.

D:\MigrationTest\Files\Average_1M\c,,,https://SPOSite.sharepoint.com,Documents,Test
C:\work\Powershell\negative,,,https://SPOSite.sharepoint.com/,Documents,DocLibrary_SubfolderName

Fragmentos de código para la migración masiva cargando un archivo JSON:

#Load JSON:
$jsonItems = Get-Content -Raw -Path  "C:\spmt.json" | ConvertFrom-Json
ForEach ($taskItem in $jsonItems.Tasks)
{
    $jsonString = ConvertTo-Json $taskItem -Depth 100
    Add-SPMTTask -JsonDefinition $jsonString -SharePointSourceCredential $onpremCredential
}

Hay tres tareas de migración definidas en el archivo de spmt.json.

{
   "Tasks":[
      {
         "SourcePath":"http://On-prem/sites/test",
         "TargetPath":"https://YourSPO.sharepoint.com",
         "Items":{
            "Lists":[
               {
                  "SourceList":"list-01",
                  "TargetList":"list-01"
               }
            ],
            "SubSites":[

            ]
         }
      },
      {
         "SourcePath":"http://On-prem/sites/test",
         "TargetPath":"https://YourSPO.sharepoint.com",
         "Items":{
            "Lists":[
               {
                  "SourceList":"list-02",
                  "TargetList":"list-02"
               }
            ],
            "SubSites":[

            ]
         }
      },
      {
         "SourcePath":"http://On-prem/sites/test",
         "TargetPath":"https://YourSPO.sharepoint.com",
         "Items":{
            "Lists":[
               {
                  "SourceList":"doclib-01",
                  "TargetList":"doclib-01"
               }
            ],
            "SubSites":[

            ]
         }
      }
   ]
}

Ejemplo 4: mostrar el progreso de la migración

Estos ejemplos muestran cómo visualizar el progreso del proyecto de migración. Get-SPMTMigration devuelve el objeto de la sesión actual Incluye el estado de las tareas actuales y la configuración actual del nivel de sesión.

El estado de las tareas actuales incluye:

  • Recuento de archivos escaneados.
  • Recuento de archivos filtrados.
  • Recuento de archivos migrados.
  • Recuento de archivos con errores.
  • El progreso de la migración de la tarea actual (0 ~ 100).
  • Estado de la tarea actual.
  • Mensajes de error de migración, si hay alguno.

# Start migration in the background
Start-SPMTMigration -NoShow

# Get the object of current migration
$session = Get-SPMTMigration

# Query migration status every 5 seconds until migration is finished
while ($session.Status -ne "Finished")
{
Write-Host $session.Status

    # Query migration progress of each tasks
    Foreach ($taskStatus in $session.StatusOfTasks)
    {
        $taskStatus.MigratingProgressPercentage
}

    Start-Sleep -Seconds 5
}