Exchange 2016: Berechtigungen für öffentliche Ordner setzen mit PowerShell

    Exchange 2016 Öffentliche Ordner (Public Folder)Gerade bei größeren Ordner­strukturen ist das Rechte-Management mit der Web-Konsole um­ständlich und lang­sam. Exchange 2016 bringt daher wie seine Vor­gänger eigene PowerShell-Scripts für solche Auf­gaben mit. Sie können Benutzer­berechtigungen für ganze Hierarchien hinzu­fügen oder ent­fernen.

    Beim täglichen Arbeiten mit öffent­lichen Ordnern musste ich regelmäßig die Erfahrung machen, dass in tiefen Ordner­hierarchien das Ändern von Berechtigungen und der Vererbung nicht richtig funktioniert. Ab und an kommt es auch vor, dass die Konsole in einen Timeout läuft und mit einem Fehler beendet wird.

    Mitgelieferte Scripts für Rechte-Management nutzen

    Bei einem Abbruch der Operation werden erwartungs­gemäß nicht alle Ordner mit der passenden Berechtigung versehen. Besonders ärgerlich ist es, wenn Berechtigungen entzogen werden sollen und auch dies nicht zuverlässig funktioniert.

    Die Änderung von Ordner-Berechtigungen in der Web-Konsole kann langsam ausfallen oder ganz abbrechen.

    Hier ist die Exchange-PowerShell zu empfehlen, die mit diese Aufgabe deutlich besser zurechtkommt als die Web-Konsole. Exchange 2016 bringt zu diesem Zweck ein paar zusätzliche Bordmittel mit, um die Berechtigungen mit der Exchange-Verwaltungskonsole zu administrieren.

    In der Exchange-PowerShell navigieren Sie dazu mit

    cd "$env:ProgramFiles\Microsoft\Exchange Server\V15\Scripts"

    in das Script-Verzeichnis.

    Das Script-Verzeichnis in Exchange 2016

    Berechtigungen hinzufügen

    Um einen Benutzer Berechtigungen geben zu können, brauchen wir dort das Script AddUserToPFRecursive.ps1:

    .\AddUsersToPFRecursive.ps1 -TopPublicFolder "\Contoso" `
    -User "max.mustermann" -Permissions {Owner}

    Der TopPublicFolder ergibt sich aus der Ordnerstruktur und kann in der Web-Konsole eingesehen werden.

    Die Ordnerstruktur für den Parameter TopPublicFolder kann man in der Web-Konsole einsehen.

    In unserem Beispiel bekommt der Benutzer Max Mustermann jetzt die Berechtigungen von Owner (= Besitzer) auf den Ordner Contoso und alle Unterordner. Zudem listet PowerShell recht schön auf, wo überall Berechtigungen gesetzt werden.

    Berechtigungen auf öffentliche Ordner vergeben mit AddUsersToPFRecursive.ps1

    Folgende Berechtigungen können vergeben werden:

    • Stufe 1 = Contributor
    • Stufe 2 = Reviewer
    • Stufe 3 = NonEditingAuthor
    • Stufe 4 = Author
    • Stufe 5 = PublishingAuthor
    • Stufe 6 = Editor
    • Stufe 7 = PublishingEditor
    • Stufe 8 = Owner

    Zugriffsrechte entziehen

    Entfernt werden können Berechtigungen mit folgendem Befehl:

    .\RemoveUserFromPFRecursive.ps1 -TopPublicFolder "\Contoso\Abteilung A" `
    -User "max.mustermann"

    Wir haben nun Max Mustermann die Berechtigungen für den Ordner Abteilung A und alle darunter liegenden Ordnern entzogen.

    Das Ergebnis der Operation kann man in der Web-Konsole überprüfen, hier das Entziehen einer Berechtigung.

    Alle Zugriffsrechte in parallelen Ordnern, wie Ablage B in unserem Beispiel, bleiben wie gewünscht erhalten.

    1 Kommentar

    Bild von Christopher Schwalb
    Christopher Schwalb sagt:
    11. Juli 2018 - 18:00

    Danke für die Anleitung. Wenn ich das Skript ausführe bekomme ich die Meldung:
    "Cannot process argument transformation on parameter 'Identity'. Cannot convert the "Ordnername" value of type "Deserialized.Microsoft.Exchange.Data.Storage.Management.PublicFolder" to type "Microsoft.Exchange.Configuration.Tasks.PublicFolderIdParameter".