adding List / Library Mapping via Manifest File

This commit is contained in:
2026-04-15 15:13:49 +02:00
parent fafbac3569
commit 25428ccce2
2 changed files with 307 additions and 40 deletions

View File

@@ -9,6 +9,7 @@ Das Skript kann:
- 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
- Listen- und Bibliotheksnamen ueber `manifest.csv` auf Zielnamen abbilden
## Voraussetzungen
@@ -49,6 +50,7 @@ OutputPath
- Die Originaldatei wird in `Files\<Bibliothek>\...` gespeichert.
- Die Metadaten liegen direkt daneben als Sidecar-Datei:
`Dateiname.ext.properties.json`
- `manifest.csv` enthaelt ausserdem Container-Eintraege fuer Listen und Dokumentbibliotheken
### Listen
@@ -86,6 +88,33 @@ Bedeutung:
- `SourceInternalName`: interner Feldname aus dem Export
- `TargetInternalName`: interner Feldname im Zielsystem
## manifest.csv fuer Listen- und Bibliotheksmapping
Beim Export wird fuer jede Liste und jede Dokumentbibliothek eine Container-Zeile in `manifest.csv` geschrieben.
Wichtige Spalten:
- `RecordType`
- `ObjectType`
- `SourceTitle`
- `TargetTitle`
- `BaseTemplate`
Fuer das Mapping ist insbesondere `TargetTitle` gedacht:
- leer: das Skript sucht im Ziel mit dem Quellnamen
- gesetzt: das Skript sucht im Ziel mit dem Wert aus `TargetTitle`
Beispiel:
```csv
RecordType;ObjectType;SourceWebUrl;SourceTitle;TargetTitle;BaseType;BaseTemplate;RootFolderUrl;SourceServerRelativeUrl;FileName;FileUniqueId;FileLength;LocalFilePath;LocalMetadataPath;ExportedAtUtc
Container;DocumentLibrary;http://clshp001/;Documents;Dokumente;DocumentLibrary;101;/Documents;/Documents;;;;;;
Container;List;http://clshp001/;TestListe;ZielTestListe;GenericList;100;/Lists/TestListe;/Lists/TestListe;;;;;;
```
Wenn eine Ziel-Liste oder Ziel-Bibliothek nicht existiert, gibt das Skript eine Warnung aus, dass dieser Container manuell angelegt werden soll.
## Parameter
### Pflichtparameter
@@ -98,6 +127,7 @@ Bedeutung:
- `IncludeHiddenLibraries`: exportiert auch versteckte Bibliotheken
- `IncludeHiddenLists`: exportiert auch versteckte Listen
- `ExportOnly`: fuehrt nur den Export aus
- `ImportOnly`: fuehrt nur den Import aus einem vorhandenen Exportordner aus
### Importparameter
@@ -111,6 +141,7 @@ Hinweis:
- Wenn weder `ImportFiles` noch `ImportLists` gesetzt sind, werden beim Import beide Bereiche verarbeitet.
- Wenn `ExportOnly` gesetzt ist, wird kein Import gestartet.
- Wenn `ImportOnly` gesetzt ist, wird kein neuer Export gestartet.
## Beispiele
@@ -133,6 +164,27 @@ Hinweis:
-MappingCsvPath ".\FieldMapping.sample.csv"
```
### Export, manifest.csv anpassen, dann nur Import
```powershell
.\Start-SPMigration.ps1 `
-WebUrl "http://sharepoint/sites/Quelle" `
-OutputPath "C:\Temp\SP-Export" `
-ExportOnly
```
Danach `manifest.csv` bearbeiten und `TargetTitle` fuer Listen oder Bibliotheken setzen.
Anschliessend:
```powershell
.\Start-SPMigration.ps1 `
-OutputPath "C:\Temp\SP-Export" `
-TargetWebUrl "http://sharepoint/sites/Ziel" `
-MappingCsvPath ".\FieldMapping.sample.csv" `
-ImportOnly
```
### Nur Dateien importrelevant ausfuehren
```powershell
@@ -160,7 +212,7 @@ Hinweis:
### Dokumentbibliotheken
- Dateien werden in die gleichnamige Zielbibliothek importiert.
- Dateien werden in die per `manifest.csv` aufgeloeste Zielbibliothek importiert.
- Unterordner werden bei Bedarf angelegt.
- Metadaten werden anschliessend ueber das CSV-Mapping gesetzt.
@@ -171,9 +223,10 @@ Hinweis:
## Bekannte Einschraenkungen
- Zielbibliotheken und Ziellisten werden aktuell ueber den Titel aufgeloest.
- Die Zielaufloesung kann ueber `manifest.csv` mit `TargetTitle` ueberschrieben werden.
- Listenanhaenge werden derzeit noch nicht physisch mit importiert.
- Ordner in normalen Listen werden beim Import derzeit uebersprungen.
- Fehlende Ziellisten oder Zielbibliotheken werden derzeit nicht automatisch angelegt; das Skript gibt stattdessen eine Warnung zur manuellen Anlage aus.
- 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.