Hinweis: Die PowerShell-Integration erfordert ein ShareGate Migrate Pro- oder Enterprise-Abonnement. Sie ist im Essentials-Plan nicht verfügbar.
Sie können eine foreach-Schleifenanweisung verwenden, um zu und von mehreren Speicherorten zu kopieren, die in einer CSV-Datei aufgelistet sind.
So sieht eine foreach-Schleifenanweisung aus:
foreach ($row in $table) { commands to be repeated for each row in your CSV }
Die Zeilen, die Sie zwischen die Klammern Ihrer foreach-Anweisung einfügen, werden für jede Zeile einer CSV-Datei wiederholt. So können Sie eine Liste von Parametern wie Website-URLs, Listennamen, Listenansichten und mehr festlegen, um den Ablauf Ihrer Migration zu steuern.
Hinweis: Ab Ende Januar 2026 hat Microsoft begonnen, das IDCRL-Cookie schrittweise abzuschaffen. Das bedeutet, dass in den meisten Microsoft 365-Mandanten nur noch die Authentifizierungsmethoden Browser und Modern authentication mit den Parametern -Browser und -ModernAuth funktionieren. Weitere Informationen zu dieser Änderung finden Sie unter Wichtige Änderung bei der Authentifizierung für "Andere Benutzer" bei Microsoft 365.
Beispiele
Eine Seite mit Copy-Content auf mehrere Websites kopieren
In diesem Beispiel wird der Befehl copy-content verwendet, um eine Startseite aus einer Quell-Bibliothek Site Pages in viele andere Site Pages-Bibliotheken zu kopieren. Die Zielwebsite ist die einzige Variable, die sich bei jedem Durchlauf der foreach-Schleife ändert.
Eine CSV-Anleitung für Ihre Migration erstellen
Erstellen Sie ein neues Excel-Dokument.
Benennen Sie die erste Spalte DestSite.
Listen Sie die URLs aller Websites auf, auf die Sie die Startseite kopieren möchten.
Speichern Sie die Datei als CSV.
Skript erstellen
Kopieren Sie das folgende Skript und fügen Sie es in die PowerShell-Anwendung Ihrer Wahl ein.
Import-Module Sharegate
# Define CSV file path
$csvFile = "C:\CSVfile.csv"
# Import CSV data into a table
$table = Import-Csv $csvFile -Delimiter ","
# Connect to the source site and get the source list
$srcSite = Connect-Site -Url "https://sourcetenant.sharepoint.com/sites/sitecollection" -Browser
$srcList = Get-List -Site $srcSite -Name "Site Pages"
# Define the destination connection
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-admin.sharepoint.com/" -Browser
# Loop through each row in the CSV
foreach ($row in $table) {
# Clear previous variables for the destination site and list
Clear-Variable -Name dstSite -ErrorAction SilentlyContinue
Clear-Variable -Name dstList -ErrorAction SilentlyContinue
# Connect to the destination site and get the destination list
$dstSite = Connect-Site -Url $row.DestSite -UseCredentialsFrom $dstSiteConnection
$dstList = Get-List -Name "Site Pages" -Site $dstSite
# Copy content from source list to destination list
Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath "Home.aspx"
}
Passen Sie Ihr Skript an Ihre Anforderungen an. Hier sind einige Richtlinien:
$csvFile: Passen Sie den Pfad so an, dass er auf die zuvor gespeicherte CSV-Datei verweist.
$table: Das Trennzeichen ist das Symbol, das Ihre CSV-Datei zur Trennung der Spalteneinträge verwendet. Stellen Sie sicher, dass Ihr Skript dasselbe Trennzeichen wie Ihre Datei verwendet (eine schnelle Möglichkeit zur Überprüfung besteht darin, die CSV-Datei in Notepad zu öffnen).
Connect-site: In diesem Beispiel wird
-Browseranstelle von-ModernAuthverwendet, um eine Verbindung zu Microsoft 365 herzustellen, da Letzteres Einschränkungen bei klassischen Seiten und klassischen Webparts aufweist. Um die Authentifizierungsmethode zu ändern, siehe den Connect Site-Artikel.$srcSite und $srcList: Die Variablen für die Quellwebsite und die Quellliste befinden sich außerhalb der foreach-Schleife. Das liegt daran, dass wir bei jedem Durchlauf der foreach-Schleife die Seite Home.aspx aus derselben Site Pages-Bibliothek verwenden.
$dstSiteConnection: Ändern Sie die URL auf die Adresse Ihres SharePoint-Admin-Centers.
Set-Variable und Clear-Variable: Diese Befehle helfen, ein Problem zu vermeiden, bei dem ein Verbindungsfehler dazu führen kann, dass Ihre Daten am falschen Ziel landen.
foreach: Wiederholt die Befehle zwischen den Klammern für jede Zeile in Ihrer CSV-Datei. In diesem Fall wird eine Kopie der Datei Home.aspx für Sitecollection1 ausgeführt, dann dieselbe Dateimigration für Sitecollection2 und so weiter.
Copy-Content:
-SourceFilePathwird verwendet, um anzugeben, welche Datei kopiert werden soll. In diesem Fall ist es Home.aspx, die sich im Stammverzeichnis der Site Pages-Bibliothek befinden sollte. Wenn Sie eine andere Datei in einem Ordner kopieren möchten, müssen Sie den Pfad relativ zur Bibliothek angeben (folder/custompage.aspx).-UseCredentialsFrom: Dieses Skript verwendet die Browser-Authentifizierung mit dem Parameter
-UseCredentialsFrom, um eine einzelne Verbindung wiederzuverwenden. Beim Starten fragt Sie dieses Skript nach Ihren Microsoft 365-Anmeldeinformationen. Weitere Informationen oder um sie zu ändern, siehe Connect-Site und Wiederholte Eingabe Ihrer Anmeldeinformationen bei den Verbindungsmethoden Browser und Modern vermeiden.
Führen Sie Ihr Skript aus, sobald es ordnungsgemäß angepasst und getestet wurde.
Skript anpassen
Als Beispiel dafür, wie Sie Ihrem Skript mit der foreach-Schleifenanweisung Variablen hinzufügen können, zeigen wir Ihnen hier, wie Sie mit demselben Skript pro Website eine andere Seite kopieren können:
Fügen Sie in Ihrer CSV-Datei eine neue Spalte SrcPage hinzu.
Geben Sie für jede Website in der Liste den Namen der Seite ein, die Sie aus der Quell-Bibliothek Site Pages migrieren möchten.
Speichern Sie Ihre geänderte CSV-Datei.
Ändern Sie Ihr Skript, indem Sie "Home.aspx" in der Zeile Copy-Content durch $row.SrcPage ersetzen.
Copy-Content -SourceList $srcList -DestinationList $dstList -SourceFilePath $row.SrcPage
Führen Sie das Skript aus. Alle Websites erhalten dann die von Ihnen angegebene Seite in der Ziel-Bibliothek Site Pages.
Mehrere Websitesammlungen von einer SharePoint-Farm in einen Microsoft 365-Mandanten zusammenführen
In diesem Beispiel wird der Befehl copy-site verwendet, um Ihre Websitesammlungen aus einer SharePoint-Farm mit neuen Websitesammlungen in Microsoft 365 zusammenzuführen. Die Variablen, die sich bei jedem Durchlauf der foreach-Schleife ändern, sind die URLs der Quell- und Zielwebsite.
Eine CSV-Anleitung für Ihre Migration erstellen
Erstellen Sie ein neues Excel-Dokument.
Benennen Sie die erste Spalte SourceSite.
Benennen Sie die zweite Spalte DestSite.
Listen Sie die entsprechenden URLs der Quell- und Ziel-Websitesammlungen auf.
Hinweis: Sie können den Websitesammlungsbericht verwenden, um eine Liste Ihrer Websitesammlungen zu erhalten.
Speichern Sie die Datei als CSV.
Skript erstellen
Kopieren Sie das folgende Skript und fügen Sie es in die PowerShell-Anwendung Ihrer Wahl ein.
Import-Module Sharegate
# Define CSV file path
$csvFile = "C:\CSVfile.csv"
# Import CSV data into a table
$table = Import-Csv $csvFile -Delimiter ","
# Source credentials
$srcUsername = "sourceusername"
$srcPassword = ConvertTo-SecureString 'sourcepassword' -AsPlainText -Force
# Destination connection
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-admin.sharepoint.com" -ModernAuth
# Set variables for source and destination sites
Set-Variable -Name srcSite, dstSite
# Loop through each row in the CSV
foreach ($row in $table) {
# Clear previous variables for source and destination sites
Clear-Variable -Name srcSite -ErrorAction SilentlyContinue
Clear-Variable -Name dstSite -ErrorAction SilentlyContinue
# Connect to the source and destination sites
$srcSite = Connect-Site -Url $row.SourceSite -Username $srcUsername -Password $srcPassword
$dstSite = Connect-Site -Url $row.DestSite -UseCredentialsFrom $dstSiteConnection
# Copy site from source to destination
Copy-Site -Site $srcSite -DestinationSite $dstSite -Merge -Subsites
}
Passen Sie Ihr Skript an Ihre Anforderungen an. Hier sind einige Richtlinien:
$csvFile: Passen Sie den Pfad so an, dass er auf die zuvor gespeicherte CSV-Datei verweist.
$table: Das Trennzeichen ist das Symbol, das Ihre CSV-Datei zur Trennung der Spalteneinträge verwendet. Stellen Sie sicher, dass Ihr Skript dasselbe Trennzeichen wie Ihre Datei verwendet (eine schnelle Möglichkeit zur Überprüfung besteht darin, die CSV-Datei in Notepad zu öffnen).
$srcUsername, $srcPassword: Ersetzen Sie "sourceusername" und 'sourcepassword' durch Ihre SharePoint-Anmeldeinformationen.
$dstSiteConnection: Ersetzen Sie die URL durch die Adresse des SharePoint-Admin-Centers Ihres Zielmandanten.
Connect-site: Der Befehl zum Verbinden mit einer SharePoint-Website. Wenn Sie die Authentifizierungsmethode ändern müssen, siehe Connect Site.
Set-Variable und Clear-Variable: Diese Befehle helfen, ein Problem zu vermeiden, bei dem ein Verbindungsfehler dazu führen kann, dass Ihre Daten am falschen Ziel landen.
foreach: Wiederholt die Befehle zwischen den Klammern für jede Zeile in Ihrer CSV-Datei. In diesem Fall wird sitecollection1 aus Ihrer Quelle mit sitecollection1 in Ihrem Ziel zusammengeführt, dann sitecollection2 mit sitecollection2, und so weiter.
-UseCredentialsFrom: Dieses Skript verwendet die Modern authentication mit dem Parameter
-UseCredentialsFrom, um eine einzelne Verbindung wiederzuverwenden. Beim Starten fragt Sie dieses Skript nach Ihren Microsoft 365-Anmeldeinformationen. Wenn MFA für Ihre(n) Mandanten nicht erzwungen wird, können Sie Ihr Skript so konfigurieren, dass für die unbeaufsichtigte Zeitplanung ein Benutzername und ein Kennwort verwendet werden. Die Modern authentication hat einige Einschränkungen beim Kopieren. Weitere Informationen finden Sie unter Connect-Site und Wiederholte Eingabe Ihrer Anmeldeinformationen bei den Verbindungsmethoden Browser und Modern vermeiden.Copy-Site: Ohne die Parameter
-Mergeund-Subsiteswürde das Skript die Quell-Websitesammlung als Unterwebsite der Ziel-Websitesammlung kopieren und die eigenen Unterwebsites der Quelle nicht einschließen.
Führen Sie Ihr Skript aus, sobald es ordnungsgemäß angepasst und getestet wurde.
Zu beachten
Migrationsberichte
Migrationsberichte werden automatisch generiert und sind unter Tasks zu finden. Sie können die Berichte auch in Ihrem Skript mit Export-Report exportieren.
Zeitplanung
Sie können Ihre Migration planen, um sie außerhalb der Geschäftszeiten auszuführen und die Leistung zu optimieren.
Inkrementelle Migrationen
Copy & Replace wird in PowerShell standardmäßig verwendet. Wie Sie Ihr Skript für eine inkrementelle Migration anpassen, erfahren Sie im Artikel Inkrementelle Aktualisierung mit PowerShell.
Leistung
Wenn Sie mehrere hundert Gigabyte an Daten migrieren müssen, empfehlen wir, mehrere CSV-Dateien zu erstellen, um die Migration in kleineren Batches auszuführen.
Dieser Artikel wurde mit künstlicher Intelligenz übersetzt. Bei Unklarheiten konsultieren Sie bitte die englische Originalversion.


