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
der Versuch eines Downloads der Scripte unter „hier“ endet bei mir leider in einer Fehlermeldung. Sind die Dateien ggf. woanders verfügbar ?
LikeLike
sorry für die so späöte Antwort. bei mir funktioniert das.
LikeLike
Hallo Hans 1A Post, das Script könnte mir gerade das leben etwas vereinfachen leider funktioniert der Download Link nicht mehr, ist dieses noch zu bekommen?
Wird wohl so oder so Anpassungsaufwand erfordern für unsere SharePoint on Premise Umgebung.
LikeLike
Ich habe das Script nicht mehr gepflegt(!), aber in OneDrive hat Microsoft umgestellt (und damit ungültig). Ich habe den Link geändert. Seite nochmals aufrufen
LikeLike
Danke Herr Brender für dieses Script. Wenn ich nun, nicht nur eine Ausgabe am Bildschirm benötige sondern es auch gerne in ein File geschrieben haben möchte, wo müsste ich das Hinzufügen?
LikeLike
Das Script ist schon sehr alt. Und überall, wo Write Host (Bildschirm-Ausgabe) müsste eine Ausgabe hinzugefügt werden. Und natürlich am Anfang die Grund-Initialisierung eines Textfiles.Ich selbst habe derzeit leider keinerlei Resourcen frei…
LikeLike
Hallo Herr Brender
Toller Post und tolles Script. Könnten Sie mir bitte sagen ob es möglich wäre die Ausgabe auch in einem Textfile zu bekommen und nicht nur am Bildschirm?
Freundliche Grüsse
LikeLike
Hallo, wir haben im PowerShell noch eine Änderung gemacht, da mit dem Parameter „-Show“ immer noch die Fehlermeldung „“ mitgekommen ist. Unter Check illegal Extension:
if ($Changed -and $Show)
{
Write-Host $LMsg.Get_Item(„FoundillegalExtension“) $newFileName -ForegroundColor Yellow
}
LikeLike
Hi , When i run the script it says. supply values for the following parameters: status:
LikeLike
sorry, to less Information: https://hansbrender.wordpress.com/2014/08/06/onedrive-for-business-problem-exact-description-required/
LikeLike
Hallo Hans,
Toller Post! Bin gerade etwas verwundert dass ich der erste bin mit einem Kommentar 🙂
Ich hätte eine kleine Bitte zum Skript. Kann man da irgendwo Einbauen dass er nur Dateien mit einem gewissen Änderungsdatum und / oder mit einer gewissen Dateiendung verschiebt? Sozusagen als Filter.. Das wäre sehr hilfreich, bin leider kein Skripter und deshalb hierbei etwas überfordert. Ein Log-File wo drin steht was genau gemacht wurde um bei Problemen nachzuschauen wäre ebenfalls nützlich.
LikeLike
Könnte man machen, aber: das geht über das grundsätzliche Problem hinaus und wird nurmehr in einer Auftrags-Verändrung übernommen.
LikeLike