Mithilfe von PowerShell zu Microsoft Office SharePoint Online migrieren

In diesem Artikel werden die neuen PowerShell-Cmdlets behandelt, die auf der Migrations-Engine des SharePoint-Migrationstools (SPMT) basieren. Sie können verwendet werden, um Dateien aus lokalen SharePoint 2010- und SharePoint 2013-Dokumentbibliotheken und Listenelementen sowie Dateifreigaben nach Microsoft 365 zu verschieben. Informationen zu allen aktuellen PowerShell-Cmdlets im Zusammenhang mit der SharePoint-Migration finden Sie in der Cmdlet-Referenz zum Microsoft SharePoint-Migrationstool.

Die PowerShell-Cmdlets weisen dieselbe Funktionalität wie das SharePoint-Migrationstool auf.

Hinweis

Diese PowerShell-Cmdlets sind derzeit nicht für Benutzer von Office 365 verfügbar, die von 21Vianet in China betrieben werden.

Systemanforderungen

Beschreibung Empfehlung
CPU 64-Bit-Prozessor mit vier Kernen oder besser
RAM 16 GB
Lokaler Speicher Festplatte: 150 GB freier Speicherplatz
Betriebssystem Windows Server 2016 Standard oder Datacenter
Windows Server 2012 R2
Windows 10-Client
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistributable Für OneNote-Migration erforderlich.

Wichtig

PowerShell 5.0x und .NET Framework 4.6.2 oder höher sind erforderlich, um die Migration von Dateipfaden mit bis zu 400 Zeichen zu unterstützen.

Mindestanforderungen (Leistungseinbußen sind zu erwarten)

Beschreibung Mindestanforderung
CPU 64-Bit-Prozessor mit 2 Kernen und 1,4 GHz oder besser
RAM 8 GB
Lokaler Speicher Festplatte: 150 GB freier Speicherplatz
Netzwerkkarte Hochgeschwindigkeits-Internetverbindung
Betriebssystem Windows Server 2008 R2
Windows 7
Windows 8 oder 8.1
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistributable Für OneNote-Migration erforderlich.
PowerShell PowerShell 5.x ist erforderlich, um die Migration von Dateipfaden mit bis zu 400 Zeichen zu unterstützen. PowerShell 6.0 oder höher wird nicht unterstützt.

Bevor Sie beginnen:

  1. Stellen Sie Ihr Microsoft 365 entweder mit Ihrem vorhandenen Active Directory oder einer der anderen Optionen zum Hinzufügen von Konten zu Microsoft 365 bereit. Weitere Informationen finden Sie unter Microsoft 365-Integration in lokale Umgebungen und Hinzufügen von Benutzern zu Microsoft 365 Apps for Business.

  2. Öffnen Sie den Ordner:

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

    Stellen Sie sicher, dass Sie DLLs besitzen. Wenn Sie OneDrive verwenden, müssen Sie möglicherweise den WindowsPowershell-Ordner in OneDrive/Dokumente kopieren.

  3. Führen Sie von diesem Ort aus den folgenden PowerShell-Befehl aus.

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Erstellen und Initialisieren einer Migrationssitzung

  • Register-SPMTMigration
    Dieses Cmdlet erstellt und initialisiert dann eine Migrationssitzung. Die Initialisierung konfiguriert Migrationseinstellungen auf Sitzungsebene. Wenn keine bestimmten Einstellungsparameter definiert sind, werden Standardeinstellungen verwendet. Nachdem eine Sitzung registriert wurde, können Sie der Sitzung eine Aufgabe hinzufügen und die Migration starten.

Hinzufügen einer Migrationsaufgabe

  • Add-SPMTTask
    Verwenden Sie dieses Cmdlet, um der registrierten Migrationssitzung eine neue Migrationsaufgabe hinzuzufügen. Derzeit sind drei verschiedene Arten von Aufgaben zulässig: Dateifreigabeaufgabe, SharePoint-Aufgabe und JSON-definierte Aufgabe. Hinweis: Doppelte Aufgaben sind nicht zulässig.

Entfernen einer Aufgabe

  • Remove-SPMTTask
    Verwenden Sie dieses Cmdlet, um eine vorhandene Migrationsaufgabe aus der registrierten Migration zu entfernen.

Starten der Migration

Zurückgeben des Objekts der aktuellen Sitzung

  • Get-SPMTMigration
    Gibt das -Objekt der aktuellen Sitzung zurück. Dieses Cmdlet enthält die status der aktuellen Aufgaben und aktuellen Einstellungen auf Sitzungsebene. Aktuelle status umfasst Folgendes:
    • Anzahl gescannter Dateien
    • Anzahl migrierter Dateien
    • Migrationsfehlermeldungen

Beenden der aktuellen Migration

Anzeigen der Migrationsstatusdetails in der Konsole

  • Show-SPMTMigration
    Wenn Sie die Migration im NoShow-Modus starten, werden beim Ausführen des Cmdlets Show-SPMTMigration die Aufgaben-ID, der Speicherort der Datenquelle, der Zielspeicherort und der migrationsbasierte status in der Konsole angezeigt. Durch Drücken von STRG+C wird in den NoShow-Modus zurückgerufen.

Entfernen der Migrationssitzung

Beispielszenarien

Beispiel 1: DER IT-Administrator fügt eine lokale SharePoint-Aufgabe hinzu und startet die Migration im Hintergrund.

#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

Beispiel 2: Der IT-Administrator möchte die Migration aus dem Hintergrund "NoShow-Modus" in den Vordergrund stellen und unter dem Cmdlet ausführen, damit der Migrationsfortschritt in der Konsole angezeigt wird.

Show-SPMTMigration

Beispiel 3: IT-Admin möchte eine Massenmigration durchführen, indem eine .csv-Datei geladen wird. In diesem Beispiel ist die Beispieldatei „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
}

In der Datei „spmt.csv“ sind zwei Migrationsaufgaben definiert.

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

Code-Schnipsel für Massenmigration durch Laden einer JSON-Datei:

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

In der Datei „spmt.json“ sind drei Migrationsaufgaben definiert.

{
   "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":[

            ]
         }
      }
   ]
}

Beispiel 4: Migrationsfortschritt anzeigen

Diese Beispiele zeigen, wie Sie den Fortschritt Ihres Migrationsprojekts anzeigen. Get-SPMTMigration gibt das Objekt der aktuellen Sitzung zurück. Es enthält den aktuellen Aufgabenstatus und die aktuellen Einstellungen auf Sitzungsebene. Der Status der aktuellen Aufgaben umfasst Folgendes:

  • Die Anzahl der gescannten Dateien.
  • Die Anzahl der herausgefilterten Dateien.
  • Die Anzahl der migrierten Dateien.
  • Die Anzahl der fehlerhaften Dateien.
  • Der Migrationsfortschritt der aktuellen Aufgabe (0 ~ 100).
  • Die aktuelle Aufgabe status.
  • Migrationsfehlermeldungen, falls vorhanden.

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