Spaß mit Office365 – Teil 1

Mit der Cloud ist es wie mit dem rheinischen Karneval (zumindest wenn man Kunden in Köln hat): man muß es nicht mögen, aber entgehen kann man Beidem nicht.

Ich beschäftige mich seit einigen Tagen mit O365; genauer gesagt mit einem O365 E3 Plan und der Migration von Exchange dorthin. Dabei fallen einem ein paar Dinge auf; heute geht es mir insbesondere um die Befehle zur User-Administration.

Es gibt zwei Wege zur Benutzeradministration: die Weboberfläche und PowerShell. Über die Weboberfläche legt man einen User an und legt fest, ob dieser administrative Rechte bekommt. Gibt man dem User hier z.B. das Recht „Globaler Administrator“, kann dieser aber noch nicht Teilbereiche wie Exchange administrieren. Dieses gelang mir erst, nachdem ich dem User auch eine Exchange-Lizenz zugewiesen habe.

Während der Migration musste ich mehrfach User auf der O365 Seite löschen (dazu vielleicht ein anderes Mal mehr). Dabei bin ich über etwas gestolpert, was vielleicht auch Anderen schon Kopfschmerzen bereitet hat. Bei der Synchronisation zwischen OnPremise- und O365-Server tauchte die Meldung auf, dass der User schon vorhanden ist. Wie ich auf die harte Tour lernte, wird bei der Option „Übernahme-Migration“ (empfohlen für kleinere Umgebungen) immer ein neuer User auf O365-Seite erzeugt. Leider habe ich bisher nichts gefunden, aus dem klar hervorgeht, auf welche Attribute hierbei geprüft wird; die Fehlermeldung war da nicht hilfreich. Nehmen wir mal an, dass der User „Klaus Test“ heisst und der Username klaus.test ist. Wird nun bei der Synchronisation klaus.test angemeckert („schon vorhanden“), dann kann es sich um ein Exchange-Attribut oder um ein Azure AD Attribut handeln.

Über die Weboberfläche kann ich dem User die Postfach-Lizenz entziehen, was zur Löschung des Postfaches führt. Ferner kann ich (an anderer Stelle) den User komplett löschen.
Nun beginnt der interessante Teil: auch nach dem Löschen des Users bekomme ich immer noch die Fehlermeldung bzgl. des existierenden Users bei der Synchronisation. Der User landet nämlich im Papierkorb und kann von dort wiederhergestellt werden. Ich habe nur keine Möglichkeit in der Weboberfläche gefunden, wie man dort einen User auch aus dem Papierkorb löscht.

Es bleibt also wieder mal „nur“ die PowerShell. Hier lauert aber der Haken: es gibt zwei verschiedene Powershell-Sessions! Nehmen wir mal an, wir wollen Exchange Online per PowerShell verwalten. Wie benötigen dazu eigentlich nur einen Windows 7 oder 8 PC (bzw. die entsprechende Serverversion) sowie .Net Framework 4.5 bzw. 4.5.1 sowie Windows Management Framework 3.0/4.0.

Zuerst muss ich angeben, mit welchem User ich auf Exchange Online zugreifen möchte. Das geht wie an anderer Stelle auch über

$UserCredential = Get-Credential

Es geht eine Anmeldebox auf, in die man die Anmeldedaten einträgt. Diese werden dann in der Variable $UserCredential abgelegt. Im nächsten Schritt wird die Verbindung zu Exchange Online aufgebaut:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

Die erstellte Session wird noch eingebunden:

Import-PSSession $Session

Wichtig ist, dass man die Session auch wieder beendet, nachdem man sie nicht mehr braucht. Andernfalls muss man warten, bis die Session automatische beendet wird, bevor man sich wieder verbinden kann:

Remove-PSSession $Session

Nachlesen kann man das in der Exchange Online-Hilfe, aus der ich die Befehle übernommen habe: http://technet.microsoft.com/en-us/library/jj984289%28v=exchg.150%29.aspx

Damit stehen nun Exchange PowerShell-Befehle zur Verfügung wie z.B. Get-Mailbox. Führt man diesen Befehl aus, sieht man übrigens auch dass die Postfächer nicht zwingend auf einem Server liegen müssen.

Auch der Befehl Get-User ist vorhanden. Schauen wir uns nun in der Exchange-Hilfe an, wofür welcher Befehl genutzt wird, so finden wir:

Get-User: Verwenden Sie das Cmdlet Get-User, um alle Benutzer aus der Gesamtstruktur abzurufen, die den angegebenen Bedingungen entsprechen. [1]

Get-Mailbox: Mithilfe des Cmdlets Get-Mailbox können Sie die Postfachobjekte und -attribute anzeigen, Eigenschaftenseiten auffüllen oder Postfachinformationen an andere Tasks übergeben. [2]

Interessant ist hierbei die Frage, welche Befehle es für das Entfernen eines Benutzers gibt. Exchange unterscheidet hier Disable-Mailbox und Remove-Mailbox (ein Delete-User gibt es nicht). Der erste Befehl entfernt nur das Postfach sowie die Exchange-Attribute; der zweite Befehl entfernt auch das AD-Benutzerkonto.

Das Problem hierbei ist nur, dass das AD-Konto neuerdings für 30 Tage aufbewahrt wird. Wie kann man nun das Userobjekt dauerhaft löschen?

Und hier wird es jetzt spannend: man benötigt Zugriff auf das Azure Active Directory. Unglücklicherweise geht das aber nicht über die oben beschriebene Session; hierzu benötigen wir auch ein neues PowerShell-Modul.

Hierbei ist zu beachten, dass es sowohl PowerShell für Azure[3] als auch ein PowerShell-Modul für Azure Active Directory[4] gibt.

Ich will hier nicht alle Schritte wiedergeben; die angegebenen Links enthalten gute Anleitungen. Ich möchte nur kurz zeigen, wie die Verbindung aufgebaut wird.

Zuerst werden wieder die Anmeldedaten abgefragt und in einer Varibalen abgespeichert:

$msolcred = get-credential

Danach wird die Verbindung aufgebaut; man beachte hier die gegenüber der O365-Anbindung deutlich einfachere Syntax:

connect-msolservice -credential $msolcred

Einen Befehl Remove-Msolservice oder Disconnect-Msolservice scheint es nicht zu geben.

Hat man nun erfolgreich die Verbindung aufgebaut, kann man sich endlich die gelöschten Objekte anzeigen lassen:

Get-MsolUser -ReturnDeletedUsers | fl

Man beachte hierbei den Zusatz „Msol“ beim Befehl!

Für das Löschen benötigt man nun die ObjectId des Users:

Remove-MsolUser -ObjectId d21855e9-7979-4ea0-9681-04628bf418da -RemoveFromRecycleBin -force

Danach überzeugt man sich durch ein erneutes Ausführen von

Get-MsolUser -ReturnDeletedUsers | fl

dass das Objekt wirklich gelöscht wurde.

Ich würde empfehlen nach der Löschung einige Zeit zu warten, bevor man den User erneut anlegt.

[1] http://technet.microsoft.com/de-de/library/aa996896%28v=exchg.150%29.aspx

[2] http://technet.microsoft.com/de-de/library/bb123685%28v=exchg.150%29.aspx

[3] http://azure.microsoft.com/de-de/documentation/articles/install-configure-powershell/

[4] http://technet.microsoft.com/en-us/library/jj151815.aspx