Migrer vers SharePoint à l’aide de PowerShell

Cet article traite des nouvelles applets de commande PowerShell basées sur le moteur de migration de l’outil de migration SharePoint (SPMT). Ils peuvent être utilisés pour déplacer des fichiers à partir de SharePoint 2010 et SharePoint 2013 des bibliothèques de documents locales et des éléments de liste, ainsi que des partages de fichiers vers Microsoft 365. Pour plus d’informations sur toutes les applets de commande PowerShell actuelles relatives à la migration SharePoint, consultez la référence de l’applet de commande Microsoft SharePoint Migration Tool.

Les cmdlets PowerShell offrent les mêmes fonctionnalités que l’outil de migration SharePoint.

Remarque

Ces applets de commande PowerShell ne sont actuellement pas disponibles pour les utilisateurs d’Office 365 géré par 21Vianet en Chine.

Configuration requise

Configuration recommandée pour optimiser les performances

Description Recommandation
UC Processeur quadruple cœur de 64 bits minimum
Mémoire RAM 16 Go
Stockage local Disque dur : 150 Go d’espace disponible
Système d’exploitation Windows Server 2016 Standard ou Datacenter
Windows Server 2012 R2
Client Windows 10
.NET Framework 4.6.2
Redistributable Microsoft Visual C++ 2015 Requis pour la migration de OneNote

Importante

PowerShell 5.0 et .NET Framework 4.6.2 ou version ultérieure sont requis pour la prise en charge de la migration des chemins d’accès comportant jusqu’à 400 caractères.

Configuration minimale requise (exécution lente probable)

Description Spécification minimale
UC Processeur double cœur de 1,4 GHz et 64 bits minimum
Mémoire RAM 8 Go
Stockage local Disque dur : 150 Go d'espace disponible
Carte réseau Connexion Internet haut débit
Système d’exploitation Windows Server 2008 R2
Windows 7
Windows 8 ou 8.1
.NET Framework 4.6.2
Redistributable Microsoft Visual C++ 2015 Requis pour la migration de OneNote.
PowerShell PowerShell 5.0 ou version ultérieure est requis pour la prise en charge de la migration des chemins d’accès comportant jusqu’à 400 caractères.

Avant de commencer

  1. Provisionnez votre Microsoft 365 avec votre annuaire Active Directory existant ou l’une des autres options pour ajouter des comptes à Microsoft 365. Pour plus d’informations, consultez l’intégration de Microsoft 365 à des environnements locaux et Ajouter des utilisateurs à Applications Microsoft 365 pour les PME.

  2. Ouvrez le dossier :

    $env:UserProfile\Documents\WindowsPowerShell\Modules\Microsoft.SharePoint.MigrationTool.PowerShell

    Vérifiez qu’il contient des fichiers DLL. Si vous utilisez OneDrive, il est possible que vous deviez copier le dossier WindowsPowershell dans OneDrive/Documents.

  3. À partir de cet emplacement, exécutez la commande PowerShell suivante

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Créer et initialiser une session de migration

  • Register-SPMTMigration
    Cette applet de commande crée et initialise une session de migration. L’initialisation configure les paramètres de migration au niveau de la session. Si aucun paramètre spécifique n’est défini, les paramètres par défaut sont utilisés. Une fois qu’une session est inscrite, vous pouvez ajouter une tâche à la session et démarrer la migration.

Ajouter une tâche de migration

  • Add-SPMTTask
    Utilisez cette applet de commande pour ajouter une nouvelle tâche de migration à la session de migration inscrite. Actuellement, trois types de tâches différents sont autorisés : la tâche de partage de fichiers, la tâche SharePoint et la tâche définie par JSON. Remarque : les tâches en double ne sont pas autorisées.

Supprimer une tâche

  • Remove-SPMTTask
    Utilisez cette cmdlet pour supprimer une tâche de migration existante de la migration enregistrée.

Démarrer la migration

Renvoyer l’objet de la session actuelle

  • Get-SPMTMigration
    Retourne l’objet de la session active. Cela inclut l’état des tâches actuelles et des paramètres de niveau de session actuels. L’état actuel de la tâche inclut :
    • Nombre de fichiers analysés
    • Nombre de fichiers migrés
    • Les messages d’erreur de migration

Arrêter votre migration actuelle

Afficher les détails de l’état votre migration dans la console

  • Show-SPMTMigration
    Si vous démarrez la migration en mode NoShow , l’exécution de l’applet de commande Show-SPMTMigration affiche l’ID de tâche, l’emplacement de la source de données, l’emplacement cible et l’état de migration dans la console. Le fait d’appuyer sur Ctrl+C revient en mode NoShow .

Supprimer la session de migration

Exemples de scénarios

Exemple 1 : Un administrateur informatique ajoute une tâche locale SharePoint et démarre la migration en arrière-plan.

#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

Exemple 2 : Un administrateur informatique souhaite afficher la migration de l’arrière-plan en « mode NoShow » au premier plan, et exécuter la cmdlet ci-dessous pour l’affichage de la progression de la migration dans la console.

Show-SPMTMigration

Exemple 3 : It Administration souhaite effectuer une migration en bloc en chargeant un fichier .csv. L’exemple de fichier est ici 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
}

Deux tâches de migration sont définies dans le fichier 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

Extraits de code pour la migration en bloc en chargeant un fichier 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
}

Trois tâches de migration sont définies dans le fichier 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":[

            ]
         }
      }
   ]
}

Exemple 4 : Afficher la progression de la migration

Ces exemples montrent comment afficher la progression de votre projet de migration. Get-SPMTMigration renvoie l’objet de la session actuelle. Il inclut l’état actuel des tâches et les paramètres du niveau de la session actuelle. L’état des tâches actuelles comprend :

  • Nombre de fichiers analysés
  • Nombre de fichiers filtrés
  • Nombre de fichiers migrés
  • Nombre d’échecs de fichiers
  • Progression de la migration de la tâche actuelle (0 ~ 100)
  • État actuel de la tâche
  • Message d’erreur de migration s’il y en a.

# 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
}