Exchange 2016: Öffentliche Ordner in Shared Mailboxes migrieren

    Freigegebenes Postfach in Exchange Bei einer Migration von Exchange 2013 zu 2016 wurde die Anforderung an mich heran­ge­tragen, die öffent­lichen Ordner in Freigabe­post­fächer umzu­wandeln. Dabei sollte nicht nur ihre Struktur inklu­sive der In­halte, sondern auch die Berechti­gungen über­nommen werden. Letzteres erwies sich als der schwierigste Teil der Aufgabe.

    Eine weitere Vorgabe bestand darin, dass Admini­stratoren die Möglich­keit haben sollten, beispiels­weise im Exchange Control Panel (ECP) Berech­tigungen auf Unter­ordner setzen zu können. Für diesen Zweck eignet sich im Prinzip nur PowerShell, weil diese Anforderungen ohne einen Vollzugriff auf die Shared Mailbox(en) nicht direkt umgesetzt werden können.

    Migration über den Umweg einer PST-Datei

    Zusätzlich stellte sich die Frage, wie öffentliche Ordner mit einer Struktur von ca. 50 Unterordnern (Ordner, Kalender, Aufgaben etc.) in einer Shared Mailbox abgebildet werden können. Die bloße Struktur des öffentlichen Ordners zu über­nehmen fällt aber relativ einfach, zum Beispiel mit einem Export in und Re-Import aus einer PST-Datei.

    Die Berech­tigungen zu setzen erweist sich jedoch als recht schwierig, da eine weitere Anforderung darin besteht, die jeweilige Shared Mailbox per Auto-Mapping in das Outlook des jeweiligen Benutzers einzublenden.

    Ein erster Gedanke bei der Lösung dieser Aufgabe könnte sein, die Shared Mailbox den Benutzern per Vollzugriff über die Exchange-ECP zur Verfügung zu stellen. Dies steht allerdings im Gegensatz dazu, dass die bestehende Berechtigungs­struktur über­nommen werden soll.

    Die Komplexität dieses Projektes spricht dagegen, den Admini­stratoren einfach einige Zeilen PowerShell-Code an die Hand zu geben und zu hoffen, dass sie damit klar­kommen. Deshalb habe ich eine GUI gebaut, welches das Setzen der Berechtigungen vereinfacht.

    Zuweisen von Berechtigungen an User für Freigabe­post­fächer per PowerShell-GUI

    GUI für das Management der Berechtigungen

    Im ersten Feld werden alle Shared Mailboxes vorgeladen, darunter dann die Ordner des ausgewählten Postfaches. Danach kann dann mit einer ent­sprechenden Berechtigung der jeweilige Benutzer ausgewählt werden (einen ähnlichen Artikel habe ich hier bereits veröffentlicht, dabei ging es um Berechtigungen im Kalender).

    Das Auto-Mapping kann nicht mit Vollzugriff auf das Rootverzeichnis (Automapping Outlook) konfiguriert werden, da die automatische Vererbung sich auf alle Ordner im Postfach auswirken würde und der jeweilige Benutzer dann alle Inhalte des Postfachs einsehen könnte.

    Deshalb wird im Hintergrund dann für den Benutzer ein Vollzugriff auf das Stamm­verzeichnis des Postfaches eingetragen. Allerdings wird die Vererbung unterbrochen, damit explizite Berechtigungen für die Unterordner gesetzt werden können.

    Danach muss auf das gleiche Verzeichnis nochmal die Option Berechtigung zum Anzeigen von Unterordnern aktiviert werden. Ab hier kann der Benutzer nach dem Auto-Mapping die für ihn gesetzten Unterordner in der Shared Mailbox sehen.

    Achtung! Pro Benutzer sind die beiden oben beschriebenen Schritte nur einmalig auszuführen. Wenn er diese Berech­tigungen bereits hat, dann kann mit den Berechtigungen für die Unterordner fortgefahren werden.

    Senden von Mails über die Shared Mailbox

    Häufig müssen die Benutzer "im Namen von" bzw. "Senden als" nutzen, wenn über die Shared Mailbox auch noch E-Mails versandt werden sollen. Damit man hier nun nicht extra in die Exchange ECP gehen muss, habe ich diesen Aspekt in das Script mit integriert.

    Dieses PowerShell-Script ist also eine einfache Möglichkeit für Admini­stratoren, Berechtigungen auf Unterordner von Shared Mailboxen zu setzen. Weiter­führend könnte man darüber nachdenken, es so umzubauen, dass auch Benutzer­post­fächer auf diese Art freige­geben werden. Hiermit könnte man sich die Stellvertretung sparen, um Benutzern den Zugriff auf das Postfach von Kollegen zu gewähren.

    Das Listing für das Script ist relativ lang, so dass ich es hier nicht in den Text einbette. Es kann hier heruntergeladen werden.

    2 Kommentare

    Bild von Paul Seifert
    Paul Seifert sagt:
    21. August 2018 - 14:59

    Vielen Dank hierfür. Funktioniert nach Bereinigung einiger Fehler im Script sehr gut.

    Fehler in:
    Zeile 48, Sonderzeichen haben sich eingeschlichen anstelle von Anführungszeichen
    Zeile 111,112 sind identisch zu Zeile 130,131, ich hab Zeile 131 auskommentiert
    Zeile 122, Sonderzeichen anstelle von Bindestrichen bzw. Minus-Zeichen
    Zeile 151, Anstelle von Item.Name nehme benutze ich Item.Alias, sonst laufe ich auf folgenden Fehler "add-MailboxFolderpermission : Der Benutzer "Testuser" wurde in Active Directory gefunden, ihm können aber keine Berechtigungen zugewiesen werden. Versuchen Sie stattdessen ein SMTP-Adresse."

    Ein Verbesserungsvorschlag: Feedback in der GUI, wenn die Änderungen durchgeführt wurden.
    Ein Fehler: Wenn ich Berechtigungen gesetzt habe, danach ein andere Shared Mailbox auswähle und alle anderen DropDownBoxen unberührt lasse, ist es für das Script, als hätte ich nichts ausgewählt, obwohl ich die Auswahl vom ersten Vorgang noch sehe. Fehlermeldung: "Add-MailboxFolderPermission : Der Parameter "Identity" kann nicht gebunden werden. Der Wert "Shared Mailbox Name:" kann nicht in den Typ
    "Microsoft.Exchange.Configuration.Tasks.MailboxFolderIdParameter" konvertiert werden. Fehler: "Die Postfachordneridentität "Shared Mailbox Name:" hat nicht das ordnungsgemäße Format.
    Das ordnungsgemäß Format ist wie folgt: ":". ""

    Bild von Wolfgang Sommergut
    22. August 2018 - 21:56

    Hallo Herr Seifert, danke für die detaillierte Beschreibung der Bugs! Ich habe schon mal das Problem mit den Sonderzeichen behoben. Vielleicht hat Herr Eich irgendwann Zeit und Lust, das Script weiterzuentwickeln und auf Ihre Anregungen einzugehen.