Archiv
SkyDrive Pro | PowerShell Script prüft und verschiebt Ordner und Dateien
SkyDrive Pro und PowerShell?
Ja, keine Diskrepanz. Ich habe PowerShell gewählt, weil das Script anpassbar sein soll. Doch der Reihe nach. Immer wieder haben Benutzer Probleme mit Dateien, die sich nicht mit SharePoint (Online ) oder SharePoint Server 2013 onPremise synchronisieren lassen. Und die Benutzer wissen nicht, wie sie das Problem lösen sollen. Manchmal möchten Benutzer auch komplexe Ordnerstrukturen in SharePoint-Bibliotheken verschieben (siehe Anmerkung am Ende des Dokuments). Und Andre Kieft, Microsoft Partner Technical Consultant aus den Niederlanden hat mich mit seinem kleinen Script angeregt, das PowerShell-Script SDPMove zu schreiben.
[Nachtrag 09.09.13] Andrew Kieft hat einen hervorragenden Blog Post auf Technet darüber geschrieben (Englisch)
[Nachtrag 03.10.13] Microsoft hat Mitte September Änderungen bei SharePoint Online vollzogen. Hier geht es um die Dateiänderungen *.exe und *.dll, d.h. jetzt können auch Dateien mit diesen Endungen auf SharePoint hochgeladen werden. Im Powershell-Script wurde dies berücksichtigt
Die meisten Problem mit Ordner und Dateien, die beim Kopieren oder Verschieben auf dem PC in den SkyDrive Pro Ordner auftreten, sind Synchronisation-Fehler, und diese liegen an den Beschränkungen des SharePoint Server 2013:
Dabei müssen wir jedoch unterscheiden
SharePoint Online (Office 365) | geblockte Datei.Endungen (19) z.B: .ashx, .asmx… .xamlx |
SharePoint Server 2013 und SharePoint Foundation | geblockte Datei-Endungen (104) z.B. .bas, .bat,… .wsh |
Datei- und Ordner Restriktionen | nicht erlaubte Zeichen und Endungen (9+20) z.B: “&”,”%”, oder “#”, … |
Namenslänge | Ordner < 256 , Datei < 128 |
Das sind je nach SharePoint Version pro Ordner oder Datei zwischen 48 und 133 Restriktionen, die ich als Benutzer beachten muss:
- Beim schlichten Kopieren einer Datei in den SkyDrive Pro Ordner.
- Oder dem Kopieren von ganzen Ordner mit Unterordner und darin enthaltenen Dateien.
SkyDrive Pro synchronisiert ja nur. Und wirft dann Fehler aus. Microsoft arbeitet daran, SharePoint (Online) zu überarbeiten, dass z.B. das “&” – Zeichen erlaubt werden soll. Aber noch ist es nicht soweit
Abhilfe
Das PowerShell Script SDPMove.ps1
Die Parameter:
InputPath | enthält den Eingabe-Ordner z.B: C:\Test |
OutPutPath | enthält den Ziel-Ordner z.B: “C:\Users\hb\SkyDrive @ MeineFirma” |
-SPOnline | optionaler Parameter wird dieser nicht angegeben, wird immer auf SharePoint Server on Premise geprüft wenn angegeben, wird auf SharePoint Online geprüft z.B: –SPOnline |
-Fix | optionaler Parameter wird dieser nicht angegeben, wird nur geprüft (und gegebenenfalls bei Fehlern werden Fehlermeldungen ausgegeben). mit Angabe wird geprüft, geändert und z.B: -Fix |
-Show | optionaler Parameter wird dieser nicht angegeben, werden nur minimale Meldungen in der PowerShell Konsole ausgegeben mit Angabe werden detaillierte Meldungen ausgegeben. z.B: -Show |
–Language | optionaler Parameter wird dieser nicht angegeben, werden “deutsche” Meldungen ausgegeben. derzeitige Sprachen: Deutsch und English Parameter: German, English |
Beim Aufruf wird das Quellverzeichnis hierarchisch verarbeitet. Hier das Ablaufdiagramm:
Besonderheiten:
Ordner | Unzulässige Zeichen werden ersetzt. Unzulässige Endungen werden mit dem Zusatz –HBx ersetzt. Das x steht für einen numerischen Wert Ordner verbleiben im Quellverzeichnis. |
Dateien | Unzulässigen Zeichen werden ersetzt. Unzulässigen Dateiendungen werden nicht ersetzt, die Datei verbleibt im Quellverzeichnis |
Order und Dateien | Wird durch eine Änderung festgestellt, dass sich bereits ein Ordner mit gleichem Namen im Quellverzeichnis befindet, wird –HBx angehängt. Das x steht für einen numerischen Wert Überlange Ordner und Dateienamen werden gekürzt. |
Der Script-Name SDPMove sagt es ja schon, die Dateien werden verschoben. Also bitte vorher eine Kopie der zu verschiebenden Struktur anfertigen.
Hier eine kleine Auswahl, welche Änderungen SDPMove vornimmt:
Original | Änderung |
Auftrag&Rechnung.docx | AuftragundRechnung.docx |
Angebot&Version&1.docx | AngebotundVersionund1.docx |
Anfrage#1.xlsx | Anfrage1.xlsx |
Bericht~.docx | Bericht-.docx |
Test.dll.txt | keine, bleibt im Quell-Verzeichnis |
Versuch.asmx | keine, bleibt im Quell-Verzeichnis |
Download
Hier können Sie sich die zip-Datei mit dem Script herunterladen.
Entpacken Sie die zip-Datei und platzieren Sie SDPMove.ps1 zum Beispiel in den Ordner C:\PowershellScripts
Starten Sie PowerShell und navigieren Sie zum Pfad C:\PowershellScripts
Aufruf
InputPath
Nehmen wir an, Sie haben einen Ordner, der eine komplexe Struktur mit weiteren Ordnern und Dateien enthält: “C:\Test”
OutputPath
Sie wollen den Ordner “C:\Test” und alle darin enthaltenen Unterordner und alle Dateien auf SkyDrive Pro bringen: “C:\Users\Benutzer\SkyDrive @ MeineFirma”
Dann lautet der Befehl:
.\SDPMove.ps1 C:\Test “C:\Users\Benutzer\SkyDrive @ Meine Firma” –SPOnline –Fix –Show
Probleme beim Ausführen ? (Execution policy)
Hier nachlesen und Set-ExecutionPolicy RemoteSigned ausführen. (Administrator)
Script-Änderungen
Script-Änderungen können Sie natürlich durchführen. Bei einem SharePoint Server on Premise müssen Sie dies unter Umständen auch tun. Sollte z.B. in Ihrem Unternehmen der SharePoint-Administrator zusätzliche Datei-Endungen gesperrt haben, so sind diese in der Funktion Init_SPOnPremiseIllegal hinzuzufügen. Genau das gleiche gilt, wenn der SharePoint Administrator gesperrte Datei-Endungen erlaubt hat, dann sind diese zu entfernen,
Anmerkung
SDPMove eignet sich auch für das Verschieben von komplexen Ordner-Strukturen. Ob es sinnvoll ist, eine bisher vorhandene Datei-Ordnerstruktur 1:1 nach SharePoint zu bringen, das sei dahingestellt, hier sollten SharePoint-Consultants zuerst einmal ihre Beratungs-Kompetenz ins Spiel bringen.
Feedback und Kommentare erwünscht