Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Exchange 2019 Powershell-Script zur Vergabe bzw. zur Entfernung von Berechtigungen auf Postfach-Bestandteile

Empfohlene Antworten

Veröffentlicht

Mahlzeit,

TL;DR: kann mir jemand bei der Erstellung eines Powershell-Scripts mit Verzweigungen anhand von dynamisch auszulesenden Daten helfen? 🙂

 

Wir haben gerade vor, von Tobit David auf Exchange 2019 (On-Premise) zu migrieren, im Moment ist das alles noch in der Planungsphase. Aus der Historie heraus sind es die MitarbeiterInnen gewohnt, dass wir von der IT Berechtigungen auf Ordner und Kalender setzen. Von meiner Seite aus würde ich sagen, dass die MitarbeiterInnen das eigentlich selbst machen sollten, mein Vorgesetzter sagt aber, dass die Akzeptanz des neuen Systems deutlich geringer ausfallen wird, wenn das für die MitarbeiterInnen "komplizierter" wird,  deswegen soll das auch weiterhin so gehandhabt werden... 😑

Zusätzlich ist es so, dass es oft so ist, dass MitarbeiterIn A nicht Vollzugriff auf das Postfach von MitarbeiterIn B erhalten, sondern nur den Posteingang oder den Kalender sehen können soll, sonst wäre das ja mit der Postfachstellvertretung in der GUI machbar. Außerdem soll es nach Möglichkeit so sein, dass MitarbeiterIn A das Postfach von MitarbeiterIn B als "zusätzliches Postfach" im Outlook einbinden kann und dann nur die Ordner sieht, auf die Zugriff besteht, sonst könnte man ja auch einfach über "Ordner eines anderen Benutzers öffnen" gehen, was ja aber auf die Standard-Ordner wie Posteingang, Gesendete Objekte etc. beschränkt ist.

 Kleiner Einschub: ich bin erst seit gut einem Monat in meiner jetzigen Firma in der internen IT. Vorher war ich bei einem IT-Dienstleister, wo ich einiges mit Exchange zu tun hatte, also habe ich prinzipiell schon Erfahrungen in der Exchange-Administration, es kamen da aber nie solche Anforderungen... 😑

Da Exchange ja nicht wie David mit Berechtigungen im Dateisystem arbeitet, kann da nicht einfach Lesezugriff auf den Ordner vergeben werden, sondern das muss per PowerShell durchgeführt werden. Die grundlegenden Funktionen wie Berechtigungen über add-mailboxfolderpermission hinzufügen oder per remove-mailboxfolderpermission sind ja kein Problem, ich würde aber gerne ein relativ ausgefeiltes Script gestalten, damit die Kollegen, die noch nie Exchange administriert haben, da schnell rein kommen. Ich habe mir das in folgender Weise gedacht, damit keine Fehlermeldungen erscheinen, sofern die Parameter richtig eingegeben wurden:

  • Das Script wird aufgerufen und fragt folgende Parameter ab:
    1. Sollen Berechtigungen hinzugefügt oder entzogen werden? (kein Problem mit $<Variablenname> = read-host "<Beschreibung>")
    2. Name des Postfachs, auf das die Berechtigungen gewährt bzw. wo die Berechtigungen entzogen werden sollen (ebenfalls kein Problem mit der selben Syntax)
    3. Name des Benutzerkontos, welches die Berechtigungen bekommen bzw. dem Berechtigungen entzogen werden soll (ebenfalls kein Problem mit der selben Syntax)
    4. Bestandteil des Postfachs, auf das die Berechtigungen gewährt werden bzw. von wo die Berechtigungen entzogen werden sollen (z.B. Posteingang oder Kalender, auch hier die selbe Syntax)
  • Wenn in 1. Berechtigungen hinzugefügt werden sollen:
    • Das Script prüft, ob das Benutzerkonto aus 3. schon Lesezugriff auf das Stammverzeichnis des Postfachs aus 2. hat
      • Falls nein, soll Leseberechtigung auf das Stammverzeichnis plus den Postfach-Bestandteil vergeben werden
      • Falls ja, soll Leseberechtigung nur auf den Postfach-Bestandteil vergeben werden
  • Wenn in 1. Berechtigungen entfernt werden sollen:
    • Das Script prüft, ob das Benutzerkonto aus 3. Zugriff auf andere Postfach-Bestandteile hat (z.B. wenn Berechtigungen vom Kalender entfernt werden sollen, soll geprüft werden, ob noch Berechtigungen auf den Posteingang bestehen)
      • Falls nein, werden die Berechtigungen von dem Bestandteil entfernt, welcher in 3. angegeben wurde und aus dem Stammverzeichnis
      • Falls ja, werden nur die Berechtigungen von dem Bestandteil entfernt, welcher in 3. angegeben wurde

 

Mit folgendem Script werden schon mal die Punkte 2-4 ordentlich abgefragt sowie Berechtigungen hinzugefügt bzw. entfernt (die erste Zeile ist aktuell komplett überflüssig, habe ich aber schon mal eingefügt, weil das abgefragt werden soll):

$hinzufuegen_oder_entfernen = read-host "Sollen Berechtigungen hinzugefügt oder entfernt werden? Hinzufügen = 1, Entfernen = 2"
$postfach = read-host "Bitte den Benutzernamen eingeben, auf dessen Postfach zugegriffen werden soll"
$benutzer = read-host "Bitte den Benutzernamen eingeben, der Zugriff auf das andere Postfach erhalten soll"
$bestandteil = read-host "Bitte den Postfachbestandteil eingeben, für den diese Änderung gelten soll"

# Hier geschieht Magie, der nächste Abschnitt soll nur angesprochen werden, wenn bei der ersten Frage "1" eingegeben wurde
# Außerdem soll geprüft werden, ob das Benutzerkonto schon Lesezugriff auf das Stammverzeichnis hat, sonst würde die erste Zeile eine Fehlermeldung erzeugen

Add-MailboxFolderPermission -identity ${postfach} -user ${benutzer} -accessrights foldervisible
Add-MailboxFolderPermission -identity ${postfach}:\${bestandteil} -user ${benutzer} -accessrights reviewer

# Hier geschieht Magie, der nächste Abschnitt soll nur angesprochen werden, wenn bei der ersten Frage "1" eingegeben wurde
# Außerdem soll geprüft werden, ob das Benutzerkonto noch Lesezugriff auf andere Bestandteile des Postfachs hat, damit nicht ggf. fälschlicherweise die Berechtigung auf das Stammverzeichnis entfernt wird

Remove-MailboxFolderPermission -identity ${postfach} -user ${benutzer}
Remove-MailboxFolderPermission -identity ${postfach}:\${bestandteil} -user ${benutzer}

# Hier kommt noch ein bisschen Ausgabe á la "Berechtigungen wurden erfolgreich gesetzt/entfernt" etc.

 

Die Kür wäre es, wenn auch Berechtigungen auf Unterordner unter dem Posteingang gesetzt werden könnten, dann müssten eben nicht nur für das Stammverzeichnis, sondern auch für den Posteingang automatisch Berechtigungen gesetzt werden.

 

Schon mal danke an diejenigen, die bis hierhin mitgelesen haben und sich ggf. am Brainstorming beteiligen. 🙂

Puhhh... verstehe ich richtig, dass du den Part noch gerne hättest:

vor 19 Stunden schrieb Eye-Q:

Die Kür wäre es, wenn auch Berechtigungen auf Unterordner unter dem Posteingang gesetzt werden könnten, dann müssten eben nicht nur für das Stammverzeichnis, sondern auch für den Posteingang automatisch Berechtigungen gesetzt werden.

Der Rest funktioniert soweit?

vor 19 Stunden schrieb Eye-Q:

Die Kür wäre es, wenn auch Berechtigungen auf Unterordner unter dem Posteingang gesetzt werden könnten, dann müssten eben nicht nur für das Stammverzeichnis, sondern auch für den Posteingang automatisch Berechtigungen gesetzt werden.

Wenn ich mich recht erinnere müsstest du hier mit Pipe und Rekursion arbeiten.

Irgendwie so:

Get-MailboxFolder -Identity ${postfach} -Recurse | Remove-MailboxFolderPermission -user ${benutzer}

Gebe keine Garantie auf korrekte funktionsweise.. würde es nur so ungefähr angehen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.