addes Import Functions and Readme.md
This commit is contained in:
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.
|
||||
Reference in New Issue
Block a user