OneDrive for Business: Als Administrator Nutzerdateien migrieren mittels PowerShell

06. Januar 2016
Für den Umzug in die Cloud bietet Microsoft mit Office 365 eines der ausgereiftesten und beliebtesten Pakete für kleine und mittelständische Unternehmen. Administratoren stehen jedoch vor einigen Herausforderungen, da mit Bordmitteln nur ein begrenztes Maß an Anpassungen möglich ist. In diesem Artikel widme ich mich der Migration von Nutzer-Dateien in deren persönliches OneDrive for Business Ordner.
 
Es bieten sich verschiedene Wege an, um die lokalen Dateien der Nutzer in die Cloud zu bekommen. Die unterschiedlichen Stärken und Schwächen bei den diversen Varianten machen es dem einen oder anderen Administrator schwer, den idealen Weg zu finden. 
 

Problem – Original Metadaten werden überschrieben

Beim Upload der Dateien in OneDrive for Business werden nicht alle Metadaten der Original-Datei beibehalten. So wird z.B. immer der Nutzer, welcher die Dateien in das OneDrive hochlädt, auch als letzter Bearbeiter eingetragen. Führt der Administrator eine solche Migration durch, steht er also als Bearbeiter in allen Dateien. Ebenso wird für das letzte Bearbeitungsdatum der Zeitpunkt des Hochladens eingetragen. Ein möglicher aber eher unpraktikabler Workaround könnte sein, dass sich der Administrator mit jedem Nutzerkonto anmeldet und die Daten unter der Identität des Nutzers hochlädt. In der Regel kommt dieser Schritt nicht in Frage, da der Administrator keinen Zugang zu den Nutzer-Accounts haben sollte. Auch ist der Prozess äußerst zeitaufwändig und am Ende steht noch das Problem, das dann noch immer das Bearbeitungsdatum auf Migrationszeitpunkt gesetzt wird.
 

Mit PowerShell zum gewünschten Ergebnis

Alternativen bieten diverse Tools von Drittanbietern. Wer sich nun keine teure Drittanbieter Software kaufen möchte, der greift zur mächtigen PowerShell und kann sich so günstig und sehr individuell abhelfen. Denn die meisten verfügbaren Tools basieren ebenso auf den Funktionalitäten dieser.
 
Die Anforderungen mögen sich von Fall zu Fall unterscheiden, unsere grundlegenden bei NEUARBEITEN sind jedoch folgende:
  • Der SharePoint Administrator soll zentral alle Nutzer migrieren können
  • Die Migration soll ohne die Kennwörter der Nutzer möglich sein
  • Der OneDrive for Business Besitzer soll als letzter Bearbeiter im SharePoint stehen und nicht der Administrator
  • Das originale Änderungsdatum der Dateien und Ordner soll im SharePoint stehen
Um diese Vorgaben einzuhalten und das Ziel der Migration von lokalen Dateien in Nutzer OneDrives einer neuen Office 365 Umgebung zu erreichen müssen folgende Hürden überwunden werden.
 

Umsetzungschritte

 
1. OneDrive aktivieren
Im ersten Schritt muss die OneDrive Site aktiviert werden, wenn diese vorher noch nie aufgerufen wurde. Dazu bietet Microsoft eine gute Lösung an.  
 
Wenn dies für viele Nutzer gemacht werden soll, bietet es sich an zum einen ein Dokument mit den UPNs einzubinden und die Aktivierung, sowie die folgenden Schritte in einer Schleife auszuführen. Dabei ist zu beachten, dass die Aktivierung einer OneDrive Site einige Minuten dauert.
 
2. Administratorzugriff gewähren
Wenn das OneDrive erfolgreich angelegt ist, kann der Administrator dafür als Site Collection Administrator hinzugefügt werden. Dies funktioniert mit dem Befehl Set-SPOUser. Nachfolgend zeige ich ein Verwendungsbeispiel:
 
$boxURL = “https://<Tenantname>-my.sharepoint.com/personal/<Nutzername>_<Tenantname>_onmicrosoft_com”

$site = Get-SPOSite -Identity $boxURL

Set-SPOUser -Site $site.Url -LoginName $AdminName -IsSiteCollectionAdmin $true
Um nach Abschluss der Migration den Administrator wieder als Site Collection Administrator zu entfernen, wird in den oberen Befehlen lediglich die Property -IsSiteCollectionAdmin auf $false gesetzt.
 
3. Dateiarbeit
Damit Dateien hochgeladen werden können, muss das Skript, bzw. der ausführende Nutzer Zugriff auf die Quelldaten haben.
 
Zum Upload von ganzen Ordnerstrukturen bietet es sich an, von dem Angegebenen Pfad zu beginnen und zuerst alle Elemente der darunterliegenden Ebene darauf zu prüfen ob es sich um einen Ordner handelt. Dazu dient folgender Befehl:
 
if ($_.PSIsContainer -eq $True) {

}
 
Wenn dies der Fall ist, kann dieser direkt angelegt werden. Um nun die Metadaten anzupassen, muss der Context auf den aktuellen Pfad angepasst werden. Das Erstellungsdatum und das Zuletzt geändert Datum kann aus der Quelle verwendet werden. Die SharePoint Metadaten für Autor und letzten Bearbeiter können aus dem Nutzerobjekt des Besitzers, des OneDrives genommen werden.
 
Wenn alle Ordner der aktuellen Ebene erstellt sind, können die Dateien hochgeladen werden. Dafür wird der Context der Datei geladen, ein Datei-Stream geöffnet und danach die Attribute analog wie bei den Ordnern angepasst.

Erweiterung

Abschließend, wie oben bereits erwähnt, kann man dem Administrator die Berechtigungen auf die Nutzer Site wieder entziehen.
 
Alle Schritte können nun noch in ein komplettes Skript gepackt werden und mittels einer Nutzerliste gefüttert werden, schon können viele Nutzer OneDrives von einem Punkt, mit wenigen Schritten migriert werden.
 
Wir bei NEUARBEITEN haben uns auf diese Weise eine universelle Möglichkeit zur Migration von OneDrive geschaffen. Für individuelle Kundenanforderungen erstellen wir uns ebenso mit geringem Aufwand maßgenschneiderte Lösungen.
 
Wenn Sie Fragen zu der Migration von OneDrive mittels PowerShell haben, kommen Sie gern auf uns zu.
 

Neuen Kommentar schreiben