addes Import Functions and Readme.md
This commit is contained in:
4
FieldMapping.sample.csv
Normal file
4
FieldMapping.sample.csv
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
SourceInternalName;TargetInternalName
|
||||||
|
DHS2016Persdat;Persdat
|
||||||
|
DHS2016Dienstgrad;Dienstgrad
|
||||||
|
DHS2016SecurityClearance;SecurityClearance
|
||||||
|
182
README.md
Normal file
182
README.md
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# 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:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
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:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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:
|
||||||
|
|
||||||
|
```csv
|
||||||
|
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
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\Start-SPMigration.ps1 `
|
||||||
|
-WebUrl "http://sharepoint/sites/Quelle" `
|
||||||
|
-OutputPath "C:\Temp\SP-Export" `
|
||||||
|
-ExportOnly
|
||||||
|
```
|
||||||
|
|
||||||
|
### Export und danach Import
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\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
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\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
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\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.
|
||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user