Cargar contenido local a SharePoint con los cmdlets de PowerShell

Nota:

La Herramienta de migración de SharePoint (SPMT) ayuda a simplificar el proceso de migración. SPMT proporciona una experiencia similar a un asistente para guiarle a través de la migración de sitios de equipo de SharePoint Server o recursos compartidos de archivos de red a Microsoft 365. Está disponible para todos los usuarios de Microsoft 365: Descargar SPMT.

Importante

La Herramienta de migración de SharePoint no está disponible actualmente para los usuarios de Office 365 ofrecido por 21Vianet en China.

Este artículo muestra cómo usar los cmdlets del PowerShell de Migración de SharePoint para migrar el contenido de un recurso compartido de archivos local a Microsoft 365.

Los cmdlets del PowerShell de migración de SharePoint están diseñados para mover contenido local de recursos compartidos de archivos. Necesitan llamadas del CSOM mínimas y usan el almacenamiento de blobs temporales de Azure para manejar grandes migraciones de datos.

Requisitos previos

  • Sistemas operativos compatibles:

    • Windows 7 Service Pack 1
    • Windows 8
    • Windows Server 2008 R2 SP1
    • Windows Server 2008 Service Pack 2
    • Windows Server 2012, Windows Server 2012 R2
  • Windows PowerShell 4.0

Nota:

Permisos: debe ser un administrador de la colección de sitios en el sitio de destino.

Antes de empezar

Paso 1: Instalar el Shell de administración de SharePoint Online

  1. Desinstale todas las versiones anteriores del Shell de administración de SharePoint Online.

  2. Descargue e instale el Shell de administración de SharePoint Online.

  3. Abra el Shell de administración de SharePoint Online y seleccione Ejecutar como administrador.

Paso 2: Configurar el directorio de trabajo

Antes de iniciar la migración, necesita configurar el directorio de trabajo con dos carpetas vacías. Estas carpetas no necesitan mucho espacio en disco, ya que solo contienen XML.

  1. Cree una carpeta de paquete temporal.

  2. Cree una carpeta de paquete final.

Paso 3: Determinar las ubicaciones y credenciales

Identifique las credenciales y las ubicaciones de los archivos de origen, los archivos de destino y la Web.

En el equipo local, abra el Shell de administración de SharePoint Online. Ejecute los siguientes comandos, pero inserte los valores:

$cred = (Get-Credential admin@contoso.com)
$sourceFiles = '\\fileshare\users\charles'
$sourcePackage = 'C:\migration\CharlesDocumentsPackage_source'
$targetPackage = 'C:\migration\CharlesDocumentsPackage_target'
$targetWeb = 'https://contoso-my.sharepoint.com/personal/charles_contoso_com'
$targetDocLib = 'Documents'

New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $sourcePackage -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib -IgnoreHidden -ReplaceInvalidCharacters

Paso 4: Crear un nuevo paquete de contenido a partir de un recurso compartido de archivos local

En este paso, se crea un nuevo paquete de migración a partir de un recurso compartido de archivos. Para crear un paquete de contenido a partir de un recurso compartido de archivos, el New-SPOMigrationPackage comando lee la lista de contenido destinado a la ruta de acceso de origen y genera XML para realizar la migración.

Los siguientes parámetros son necesarios a menos que se marquen como opcionales:

  • SourcefilesPath: apunta al contenido que quiere migrar.

  • OutputPackagePath: apunta a la carpeta temporal.

  • TargetWebUrl: apunta al sitio web de destino.

  • TargetDocumentLibraryPath: apunta a la biblioteca de documentos en la Web.

  • IgnoreHidden: omite los archivos ocultos (opcional).

  • ReplaceInvalidCharacters: corrige caracteres inválidos cuando sea posible (opcional).

Ejemplo:

En el ejemplo siguiente se muestra cómo crear un paquete nuevo a partir de un recurso compartido de archivos. Omite los archivos ocultos y reemplaza los caracteres no compatibles en los nombres de archivos o carpetas.

    New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $sourcePackage -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib -IgnoreHidden -ReplaceInvalidCharacters`

Paso 5: Convertir el paquete de contenido para el sitio de destino

Use el ConvertTo-SPOMigrationTargetedPackage comando para convertir el SML generado en la carpeta temporal. Guarda un nuevo conjunto de archivos de metadatos del paquete de migración de destino en el directorio de destino. Este es el paquete final.

Nota:

Las credenciales de administrador de la colección de sitios de destino se usan para recopilar datos para conectarse a la colección de sitios de datos.

Hay seis parámetros que es necesario introducir (otros son opcionales):

  • ParallelImport: indica a la herramienta que optimice el rendimiento mediante subprocesos en paralelo.

  • SourceFiles: apunta a la ubicación del directorio donde se encuentran los archivos de contenido de origen del paquete.

  • SourcePackagePath: apunta a la carpeta de paquete temporal.

  • OutputPackagePath: apunta a la carpeta de paquete final.

  • Credentials: credencial de SharePoint que tiene derechos de administrador en el sitio de destino.

  • TargetWebUrl: URL de su Web de destino.

  • TargetDocumentLibraryPath: la ruta de acceso a la biblioteca de destino.

Ejemplo:

En este ejemplo se muestra cómo convertir un paquete en otro paquete dirigido mediante la búsqueda de datos en la colección de sitios de destino. El parámetro -ParallelImport se usa para incrementar el rendimiento de migración del recurso compartido de archivos.

$finalPackages = ConvertTo-SPOMigrationTargetedPackage -ParallelImport -SourceFilesPath $sourceFiles -SourcePackagePath $sourcePackage -OutputPackagePath $targetPackage -Credentials $cred -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib`

Paso 6: Enviar contenido para importar

En este paso, el comando Invoke-SPOMigrationEncryptUploadSubmit crea un nuevo trabajo de migración en la colección de sitios de destino y, después, devuelve un GUID que representa el JobID. Este comando carga manifiestos y archivos de origen cifrados en el Azure Blob Storage temporal por cada trabajo.

Se deben especificar cuatro parámetros necesarios. Otros son opcionales.

  • TargetwebURL: apunta a la Web del destino.

  • SourceFilesPath: apunta a los archivos que se van a importar.

  • SourcePackagePath: apunta al manifiesto final de los archivos que se van a importar.

  • Credentials: las credenciales de SharePoint que tienen derechos de administrador de colección de sitios en el sitio de destino.

Ejemplo 1:

En este ejemplo se muestra cómo enviar los datos del paquete para crear un nuevo trabajo de migración.

 $job = Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $sourceFiles -SourcePackagePath $targetPackage -Credentials $cred -TargetWebUrl $targetWeb

Ejemplo 2:

En este ejemplo se muestra cómo enviar los datos del paquete para crear nuevos trabajos de migración para la importación en paralelo.

$jobs = $finalPackages | % {Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $_.FilesDirectory.FullName -SourcePackagePath $_.PackageDirectory.FullName -Credentials $cred -TargetWebUrl $targetWeb}

Con cada trabajo enviado, el cmdlet Invoke devuelve estas propiedades como parte de un trabajo:

  • JobId: el identificador del trabajo en SPO.

  • ReportingQueueUri: la cola de SharePoint Azure que almacena los mensajes de progreso en tiempo real de la migración.

  • Encryption: la clave de cifrado y el método usado para la carga del contenido en Azure. Esta clave es necesaria al descifrar los mensajes de la cola e importar los registros.

Si usa su propia cuenta de Azure Storage para cargar contenido en el almacenamiento, use Set-SPOMigrationPackageAzureSource y Submit-SPOMigrationJob.

Importante

Si decide usar Azure Storage, podría suponer cargos de ancho de banda. El cargo dependería de su tipo de oferta de Azure y el tamaño de la migración. Para precios generales, consulte precios de ancho de banda.

(Opcional)Paso 7 : Procesar y supervisar la migración de SharePoint

Después de que se envíe el trabajo, solo Azure y SharePoint interactúan para capturar y migrar el contenido al destino. Este proceso depende del trabajo de temporizador, lo que significa que está en una cola basada en el orden de llegada. Este proceso no impide que la misma persona ponga en cola otros trabajos.

Si no se están ejecutando otros trabajos, es posible que se produzca un retraso de 1 minuto.

Comprobar el estado del trabajo

Para comprobar el estado del trabajo, use la EncryptionKey devuelta en el paso 6 para ver las actualizaciones en tiempo real que se publican en la cuenta de Azure Storage.

Ver registros

Si usa su propia cuenta de Azure Storage, puede ver registros de todo lo que ha sucedido en el contenedor del manifiesto de Azure Storage. En esta fase, es seguro eliminar los contenedores si no quiere guardarlos como copia de seguridad en Azure.

Si se han producido errores o advertencias, se crean archivos .err o .won en el contenedor del manifiesto.

Si usa la instancia temporal de Azure Storage creada por Invoke-SPOMigrationEncryptUploadSubmit en el paso 6, puede obtener la dirección URL de SAS del registro de importación descifrando el mensaje de cola de Azure con el valor "Event" JobLogFileCreate. Puede usar la dirección URL SAS del registro de importación para descargar el archivo de registro y descifrarlo con la misma clave de cifrado devuelta en el paso 6.

Escenarios de scripting para su reutilización

Use el siguiente script de ejemplo. Incluye los pasos de determinación de las ubicaciones y credenciales, envío de los datos del paquete y creación de un trabajo de migración.

$userName = "admin@contoso.onmicrosoft.com"
$sourceFiles = "d:\data\documents"
$packagePath = "d:\data\documentPackage"
$spoPackagePath = "d:\data\documentPackageForSPO"
$targetWebUrl = "https://contoso.sharepoint.com/sites/finance"
$targetLibrary = "Documents"
$cred = Get-Credential $userName
  
New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $packagePath -TargetWebUrl $targetWebUrl -TargetDocumentLibraryPath $targetLibrary -IgnoreHidden -ReplaceInvalidCharacters

Convertir un paquete en otro paquete dirigido mediante la búsqueda de datos en la colección de sitios de destino

$finalPackages = ConvertTo-SPOMigrationTargetedPackage -SourceFilesPath $sourceFiles -SourcePackagePath $packagePath -OutputPackagePath $spoPackagePath -TargetWebUrl $targetWebUrl -TargetDocumentLibraryPath $targetLibrary -Credentials $cred

Enviar los datos del paquete para crear el trabajo de migración

$job = Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $sourceFiles -SourcePackagePath $spoPackagePath -Credentials $cred -TargetWebUrl $targetWebUrl
  
This sample shows how to get the returned information of a job, which comes in the form of a GUID.
  
```powershell
$job = $jobs[0]
$job.JobId
Guid
----
779c4b3b-ec24-4705-bb58-c38f4329418c

En este ejemplo se muestra cómo obtener $job.ReportingQueueURi.AbosoluteUri.

# To obtain the $job.ReportingQueueUri.AbsoluteUri
https://spodm1bn1m013pr.queue.core.windows.net/953pq20161005-f84b9e51038b4139a179f973e95a6d6f?sv=2014-02-14&sig=TgoUcrMk1Pz8VzkswQa7owD1n8TvLmCQFZGzyV7WV8M%3D&st=2016-10-04T07%3A00%3A00Z&se=2016-10-26T07%3A00%3A00Z&sp=rap

En este ejemplo se muestra cómo obtener la clave de cifrado y el ejemplo devuelto.

$job.Encryption
EncryptionKey                                       EncryptionMethod
-----------------------                            ------------------
{34, 228, 244, 194...}                              AES256CBC

Importante

Todos los mensajes se cifran en la cola. Para leer de la ReportingQueue, debe tener el valor de EncryptionKey.

Procedimientos recomendados y limitaciones

Descripción Recomendación
Tamaño del paquete 10-20 GB
Use el modificador -ParallelImport para la migración de recursos compartidos de archivos, que divide automáticamente el paquete grande en otros más pequeños.
Tamaño de archivos
2 GB
Tamaño de destino
Debería impedirse el acceso de los usuarios al sitio de destino hasta que se complete la migración
Límites de SharePoint
Límites de servicio en SharePoint para Microsoft 365

Límites de Azure

Recurso Predeterminado/Límite
TB por cuenta de almacenamiento
500
Tamaño máximo de un contenedor de blobs, tabla o cola.
500
Número máximo de contenedores de blobs, blobs, recursos compartidos de archivos, tablas, colas, entidades o mensajes por cuenta de almacenamiento.
El único límite es la capacidad de 500 TB de la cuenta de almacenamiento.
Rendimiento de destino de un solo blob
Hasta 60 MB o 500 solicitudes por segundo.

Las referencias de cmdlet son para SharePoint Online