SharePoint Objekte verschieben mit PowerShell
Diejenigen die einen lokalen Sharepoint im Netzwerk betreiben, stehen manchmal vor einer Herausforderung. Legt man eine Dokumentbibliothek oder eine Liste an und möchte diese danach verschieben, hat man ein Problem. Denn der Sharepoint bietet spartanische bis keine Möglichkeiten eine solche Sharepoint Liste verschieben zu können, zumindest nicht in eine andere Unter-Website. Doch manchmal führt kein Weg daran vorbei. Leider kann man aber nicht hunderte Dokumente einzeln herunterladen und mit diesen eine neue Dokumentenbibliothek anlegen. PowerShell bietet uns Gottseidank die rettende Lösung! SharePoint Objekte verschieben mit PowerShell ist kein Problem.
SharePoint Objekte verschieben mit PowerShell
Ehrlich gesagt ist auch ein SharePoint Objekte verschieben mit PowerShell nicht möglich. In PowerShell haben wir aber die Möglichkeit mit dem Befehl Export-SpWeb
Listen und Dokumentenbibliotheken zu exportieren und mit dem Befehl Import-SpWeb
diese zu importieren.
Wichtig ist im Vornherein zu sagen, dass man sich immer die korrekte URL der Seite, beziehungsweise Liste oder Bibliothek, kopieren sollte. Oft ist der Name der Seite verschieden zur URL.
Objekte exportieren aus Sharepoint
Als erstes müssen wir die Dateien, beziehungsweise die kompletten Listen oder Bibliotheken exportieren. Hierzu steht uns der Grundbefehl Export-SpWeb
zur Verfügung, welcher aber mehrere Parameter benötigt. Hier ein Beispiel:
Export-spweb https://intranet.your.domain -ItemUrl "Lists/UrlDerListe/" -IncludeUserSecurity -IncludeVersions All -path "C:\DeinVerzeichnis\DeinName.cmp" -nologfile
Natürlich lässt sich der Befehl auch kürzen, in dem man die URL zum Objekt direkt angibt:
Export-SpWeb https://intranet.your.domain/deine-liste/ -IncludeUserSecurity -IncludeVersions all -Path "C:\DeinVerzeichnis\DeinName.cmp" -NoLogFile
Parameter
Beschreibung
Sharepoint Site
Als erstes muss die Sharepoint Seite angegeben werden.
Beispiel: “https://intranet.your.domain“
ItemUrl
Hier wird die URL der Liste oder der Bibliothek angegeben, die verschoben werden soll. Hier wird aber nur den Teil nach der Sharepoint Adresse angegeben.
Beispiel: “/meineSeite/meineListe/“
IncludeUserSecurity
Der MS Sharepoint speichert Meta-Daten. Mit diesem Parameter werden diese mit exportiert.
Beispiel: “Änderungsdatum, Benutzer, Version, etc.“
IncludeVersion
Wenn die Versionierung aktivert wurde und genutzt wird, werden mit diesem Parameter auch die alten Versionen der Dokumente exportiert.
Path
Hier wird der Pfad angegeben, an dem die CMP-Datei gespeichert werden soll.
Beispiel: “C:\DeinPfad\DeineDatei.cmp“
NoLogFile
Wenn dieser Parameter angegeben wird, wird zur Aktion keine Log-Datei erstellt.
Nachdem der Befehl erfolgreich ausgeführt wurde, haben wir nun die komplette Struktur in dieser cmp-Datei. Nun sind wir mit dem Exportieren aus dem Sharepoint fertig.
Objekte importieren in Sharepoint
Nachdem wir nun die CMP-Datei erstellt haben, kann diese an einer anderen Stelle im Sharepoint importiert werden. Dafür nutzen wir nun Import-SpWeb
. Hier wieder der PowerShell Befehl:
Import-SpWeb https://intranet.your.domain/unterseite/ -IncludeUserSecurity -path "C:\DeinVerzeichnis\DeinName.cmp" -nologfile
Auch beim Importieren in Sharepoint gibt es wieder verschiedene Parameter.
Parameter
Beschreibung
Ziel URL
Hier wird die URL zur Sharepoint-Seite angegeben, in welche die CMP-Datei importiert werden soll.
Beispiel: “https://intranet.your.domain/unterseite/“
IncludeUserSecurity
Ist dieser Parameter angegeben, werden Meta-Daten mit importiert. Das funktioniert natürlich nur, wenn diese beim Exportieren inkludiert wurden.
Path
Pfad zur CMP-Datei, welche im ersten Schritt exportiert wurde und nun importiert werden soll.
Beispiel: “C:\DeinPfad\DeineDatei.cmp“
NoLogFile
Wenn dieser Parameter angegeben wird, wird zur Aktion keine Log-Datei erstellt.
Nach dem Absetzen des Befehls in der Management Shell, also in Powershell, wurde nun die zuvor exportierte Liste oder Dokumenten-Bibliothek in die gewünschte Seite importiert.
Alte Objekte löschen
Wir haben nun das Quell-Objekt exportiert, jedoch existiert diese noch immer in der Sharepoint Seite. Diese sollte natürlich gelöscht werden. Hier kann man zwei verschiedene Wege gehen. Natürlich ist es möglich diese per Web-Oberfläche zu löschen. Aber auch hier kann uns PowerShell weiterhelfen:
$spwebobject = Get-SPWeb QuellUrl $spwebobject.Lists["DeineListe"].Delete() $spwebobject.Dispose()
Das SharePoint Objekte verschieben ist also mit Hilfe von PowerShell, beziehungsweise der Sharepoint Management Shell gar nicht so schwer. Ich hoffe wir konnten euch weiterhelfen.