Exchange-Berechtigungen über die PowerShell auflisten
Berechtigungen in Exchange sind ein Klassiker für „mal eben schnell nachsehen“ – und genau hier spielt die PowerShell ihre Stärken aus. Statt sich durch Dialoge zu klicken, liefern die richtigen Cmdlets in Sekunden Klarheit: Wer hat Zugriff auf welches Postfach? Und welche Berechtigungsart ist überhaupt gemeint?
Wichtig vorab: Exchange kennt mehrere, voneinander getrennte Berechtigungswege. In der Praxis sollten Sie daher immer mindestens diese drei prüfen:
- Full Access / MailboxPermission →
Get-MailboxPermission - Send As →
Get-RecipientPermission - Send on Behalf → Mailbox-Attribut
GrantSendOnBehalfTo
1) Welche Rechte hat Benutzer X auf Postfach Y? (Full Access & Co.)
Für klassische Postfachberechtigungen (z. B. Full Access) nutzen Sie Get-MailboxPermission direkt am Zielpostfach:
Get-MailboxPermission -Identity "<Mailbox>" -User "<Benutzer>"
Für die Praxis ist eine Filterung sinnvoll, weil vererbte Einträge und Systemkonten sonst die Ausgabe verwässern:
Get-MailboxPermission -Identity "<Mailbox>" |
Where-Object { -not $_.IsInherited -and $_.User -like "*<Benutzer>*" } |
Format-Table User, AccessRights, Deny, IsInherited
2) Auf welche Postfächer hat Benutzer X Zugriff? (Organisationweit, gefiltert)
Wenn Sie wissen möchten, für welche Postfächer ein bestimmter Benutzer Rechte besitzt, können Sie alle Mailboxen durchlaufen. Das ist in großen Umgebungen teuer – filtern Sie daher unbedingt:
Get-Mailbox -ResultSize Unlimited |
Get-MailboxPermission -User "<Benutzer>" |
Where-Object { -not $_.IsInherited -and $_.AccessRights -like "*FullAccess*" } |
Select-Object Identity, User, AccessRights
Tipp: Wenn Sie auch „Deny“-Einträge sehen wollen:
Get-Mailbox -ResultSize Unlimited |
Get-MailboxPermission -User "<Benutzer>" |
Where-Object { -not $_.IsInherited } |
Select-Object Identity, User, AccessRights, Deny
3) Send As prüfen (separater Berechtigungspfad!)
Send As taucht nicht bei Get-MailboxPermission auf. Dafür ist Get-RecipientPermission zuständig:
Get-RecipientPermission -Identity "<Mailbox>" -Trustee "<Benutzer>"
Organisationweit (wo darf Benutzer X „Send As“?):
Get-Mailbox -ResultSize Unlimited |
Get-RecipientPermission -Trustee "<Benutzer>" |
Where-Object { $_.AccessRights -like "*SendAs*" } |
Select-Object Identity, Trustee, AccessRights
4) Send on Behalf prüfen (Mailboxtag/Attribut)
„Senden im Auftrag von“ ist weder MailboxPermission noch RecipientPermission, sondern ein Mailbox-Attribut:
(Get-Mailbox "<Mailbox>").GrantSendOnBehalfTo
Und organisationweit, bei welchen Mailboxen der Benutzer eingetragen ist:
Get-Mailbox -ResultSize Unlimited |
Where-Object { $_.GrantSendOnBehalfTo -match "<Benutzer>" } |
Select-Object Name, GrantSendOnBehalfTo
Merke
„Full Access“ ist nicht „Send As“ und nicht „Send on Behalf“.
Für eine vollständige Berechtigungsanalyse brauchen Sie in der Regel alle drei Abfragen.
Praxis-Hinweis für große Umgebungen
Get-Mailbox -ResultSize Unlimited kann bei vielen Postfächern dauern. Begrenzen Sie nach Möglichkeit vorab, z. B. über Namensmuster, OU, Datenbank oder Postfachtyp (Shared/Room), bevor Sie die Berechtigungen ziehen.