SkyDrive Pro | PowerShell Script prüft und verschiebt Ordner und Dateien


SDPMove, SkyDrive Pro Move, PowerShell Script, SharePoint 2013, SharePoint Online

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
a) Ordner  werden in den Zielordner kopiert
b) Dateien in den Ziel-Ordner verschoben. 

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

 

SkyDrive Pro Move, PowerShell script

 

Beim Aufruf wird das Quellverzeichnis hierarchisch verarbeitet.  Hier das Ablaufdiagramm:

Ablauf-Diagramm von SDPMove

Punkt 1 Nachdem das Script gestartet wurde, werden die Parameter überprüft und dann die nicht zulässigen Dateiendungen eingelesen.
Punkt 2 Der erste Durchgang überprüft die Ordnerstruktur
Punkt 3 im Check Folder & Files, werden unzulässige Dateiendungen, unzulässige Zeichen und überprüft und ersetzt
Punkt 4 die Ordner-Struktur wird ins Zielverzeichnis geschrieben
Punkt 5 Der zweiten Aufruf  überprüft jetzt die einzelnen Dateien
Punkt 6 die einzelnen Dateien werden ins Zielverzeichnis geschrieben.

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

17 Gedanken zu “SkyDrive Pro | PowerShell Script prüft und verschiebt Ordner und Dateien

  1. der Versuch eines Downloads der Scripte unter „hier“ endet bei mir leider in einer Fehlermeldung. Sind die Dateien ggf. woanders verfügbar ?

    Like

  2. 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.

    Like

  3. 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?

    Like

    1. 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…

      Like

  4. 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

    Like

  5. 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
    }

    Like

  6. 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.

    Like

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..