Files
Start-SPMigration/README.md

4.8 KiB

Start-SPMigration

PowerShell-Skript fuer die Migration von SharePoint On-Premise Inhalten ueber das serverseitige Objektmodell.

Das Skript kann:

  • Dokumentbibliotheken exportieren
  • Dateien inklusive Metadaten exportieren
  • normale SharePoint-Listen und deren Eintraege exportieren
  • exportierte Inhalte wieder in ein Ziel-Web importieren
  • Feldwerte ueber eine Mapping-CSV von Quell- auf Ziel-InternalNames abbilden

Voraussetzungen

  • SharePoint On-Premise Server
  • Ausfuehrung auf einem Server mit installiertem SharePoint PowerShell-Modul
  • Berechtigungen auf Quell- und Ziel-Web
  • PowerShell mit Zugriff auf SharePointServer

Das Skript laedt intern:

Import-Module SharePointServer

Dateien im Projekt

  • Start-SPMigration.ps1: Hauptskript fuer Export und optionalen Import
  • FieldMapping.sample.csv: Beispiel fuer das Feldmapping

Exportierte Struktur

Beim Export entsteht unter -OutputPath folgende Struktur:

OutputPath
|-- Files
|   |-- <Bibliothek>
|   |   |-- Unterordner
|   |   |   |-- Dokument.pdf
|   |   |   |-- Dokument.pdf.properties.json
|-- Lists
|   |-- ListeA.json
|-- manifest.csv

Dateien

  • Die Originaldatei wird in Files\<Bibliothek>\... gespeichert.
  • Die Metadaten liegen direkt daneben als Sidecar-Datei: Dateiname.ext.properties.json

Listen

  • Pro Liste wird genau eine JSON-Datei unter Lists\ erzeugt.
  • Die Eintraege enthalten insbesondere:
    • ContentTypeId
    • FieldValues
    • FieldTextValues
    • Fields

Wichtige Metadaten

Fuer den Import sind vor allem diese Informationen relevant:

  • FieldValues
  • FieldTextValues
  • ContentTypeId
  • interne Feldnamen (InternalName)

Der Name des Inhaltstyps wird bewusst nicht als fuehrende Importinformation verwendet, da er sich im Zielsystem unterscheiden kann.

Mapping-CSV

Format:

SourceInternalName;TargetInternalName
DHS2016Persdat;Persdat
DHS2016Dienstgrad;Dienstgrad
DHS2016SecurityClearance;SecurityClearance

Bedeutung:

  • SourceInternalName: interner Feldname aus dem Export
  • TargetInternalName: interner Feldname im Zielsystem

Parameter

Pflichtparameter

  • WebUrl: Quell-Web fuer den Export
  • OutputPath: Ausgabeordner fuer den Export

Exportparameter

  • IncludeHiddenLibraries: exportiert auch versteckte Bibliotheken
  • IncludeHiddenLists: exportiert auch versteckte Listen
  • ExportOnly: fuehrt nur den Export aus

Importparameter

  • TargetWebUrl: Ziel-Web fuer den Import
  • MappingCsvPath: CSV fuer Feldmapping
  • ImportFiles: importiert nur Dateien/Bibliotheken
  • ImportLists: importiert nur Listen
  • OverwriteFiles: ueberschreibt vorhandene Dateien beim Import

Hinweis:

  • Wenn weder ImportFiles noch ImportLists gesetzt sind, werden beim Import beide Bereiche verarbeitet.
  • Wenn ExportOnly gesetzt ist, wird kein Import gestartet.

Beispiele

Nur Export

.\Start-SPMigration.ps1 `
  -WebUrl "http://sharepoint/sites/Quelle" `
  -OutputPath "C:\Temp\SP-Export" `
  -ExportOnly

Export und danach Import

.\Start-SPMigration.ps1 `
  -WebUrl "http://sharepoint/sites/Quelle" `
  -OutputPath "C:\Temp\SP-Export" `
  -TargetWebUrl "http://sharepoint/sites/Ziel" `
  -MappingCsvPath ".\FieldMapping.sample.csv"

Nur Dateien importrelevant ausfuehren

.\Start-SPMigration.ps1 `
  -WebUrl "http://sharepoint/sites/Quelle" `
  -OutputPath "C:\Temp\SP-Export" `
  -TargetWebUrl "http://sharepoint/sites/Ziel" `
  -MappingCsvPath ".\FieldMapping.sample.csv" `
  -ImportFiles `
  -OverwriteFiles

Nur Listen importrelevant ausfuehren

.\Start-SPMigration.ps1 `
  -WebUrl "http://sharepoint/sites/Quelle" `
  -OutputPath "C:\Temp\SP-Export" `
  -TargetWebUrl "http://sharepoint/sites/Ziel" `
  -MappingCsvPath ".\FieldMapping.sample.csv" `
  -ImportLists

Aktuelles Verhalten beim Import

Dokumentbibliotheken

  • Dateien werden in die gleichnamige Zielbibliothek importiert.
  • Unterordner werden bei Bedarf angelegt.
  • Metadaten werden anschliessend ueber das CSV-Mapping gesetzt.

Listen

  • Listeneintraege werden neu angelegt.
  • Feldwerte werden ueber FieldValues und FieldTextValues gemappt.

Bekannte Einschraenkungen

  • Zielbibliotheken und Ziellisten werden aktuell ueber den Titel aufgeloest.
  • Listenanhaenge werden derzeit noch nicht physisch mit importiert.
  • Ordner in normalen Listen werden beim Import derzeit uebersprungen.
  • Sehr spezielle Feldtypen koennen je nach Farm-Konfiguration zusaetzliche Anpassungen benoetigen.
  • Das Skript ist fuer SharePoint On-Premise mit serverseitigem Objektmodell gedacht, nicht fuer SharePoint Online.

Empfehlung

Zuerst immer mit -ExportOnly testen und die exportierten *.properties.json sowie die Listen-JSONs pruefen. Danach das Feldmapping vervollstaendigen und erst dann den kombinierten Export/Import gegen das Zielsystem laufen lassen.