Benutzer mit den meisten Antworten
2013 CU11: Berechtigungen eines Users über alle Postfächer auslesen

Frage
-
Liebes Forum,
ich möchte die Berechtigungen eines Users über alle Postfächer auslesen.
Sprich, auf welche Postfächer und auf welche Postfachordner hat der User welchen Zugriff.Da gibt es bestimmt was von Powershell, doch ich krieg's nicht raus :-(
Ich bin für jede Hilfe und/oder Anregung dankbar!
Viele Grüße
Davorin
Antworten
-
Moin,
versuchen Sie es mit folgendem Script - evtl. die Ausgabe statt "FT" in der vorletzten Zeile anpassen:
-----------------------
# Code to get mailbox # folder permissions for all folders in
# a mailbox.
#
# Example:
# Get-MailboxFolderPermissionsForAllFolders -Mailbox egon.tester@company.com -User liese.mueller@company.com[CmdletBinding()]
param (
[Parameter( Mandatory=$true)]
[string]$Mailbox,
[Parameter( Mandatory=$true)]
[string]$User,
)# Liste der Ordner, die nicht bearbeitet werden:
$exclusions = @("/Sync Issues",
"/Sync Issues/Conflicts",
"/Sync Issues/Local Failures",
"/Sync Issues/Server Failures",
"/Recoverable Items",
"/Deletions",
"/Purges",
"/Versions",
"/Synchronisierungsprobleme",
"/Synchronisierungsprobleme/Konflikte",
"/Synchronisierungsprobleme/Lokale Fehler",
"/Synchronisierungsprobleme/Serverfehler",
"/Gelöschte Elemente"
)
# Read list of mailbox folders, exclude above listed folders
$mailboxfolders = @(Get-MailboxFolderStatistics $Mailbox | Where {!($exclusions -icontains $_.FolderPath)} | Select FolderPath)# Loop over all folders
foreach ($mailboxfolder in $mailboxfolders)
{
$folder = $mailboxfolder.FolderPath.Replace("/","\")
if (($folder -match "Top of Information Store") -or ($folder -match "Oberste Ebene des Informationsspeichers"))
{
$folder = $folder.Replace("\Top of Information Store","\")
$folder = $folder.Replace("\Oberste Ebene des Informationsspeichers","\")
}
$identity = "$($mailbox):$folder"# Get folder permission
Write-Host "Reading permissions for $user to $identity" -ForeGroundColor Green
Get-MailboxFolderPermission -Identity $identity -User $user -ErrorAction SilentlyContinue | FT
}-----------------------
Den Code als "Get-MailboxFolderPermissionsForAllFolders.ps1" speichern und auf dem Exchange Server ausführen.
Ich hoffe, es hilft weiter...
Schöne Grüße aus Isernhagen
Andreas Ohlendorf
- Als Antwort vorgeschlagen AOhlendorf Freitag, 27. Mai 2016 16:05
- Als Antwort markiert Davorin Scharping Montag, 30. Mai 2016 07:15
Alle Antworten
-
Hallo Davorin,
das können Sie mit Get-MailboxPermissions und Get-ADPermissions auslesen.
Gruß,
Teodora
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Theodora,
mit Get-MailBoxPermissions bekomme ich nur die generellen Rechte auf komplette Postfächer angezeigt (Fukll Access u.ä.), keine Berechtigungen auf die Unterordner.
Get-ADPermission liefert nur die Berechtigung auf die Datenbank, nicht auf die Postfächer.Get-MaiBox -ResultSize Unlimited | GetMailboxFolderPermission liefert augenscheinlich nicht alle Ordner/Unterordner aller Mailboxen.
Get-Mailbox -ResultSize Unlimited | Get-MailboxFolder wirft nur Fehler:
***
Cannot open mailbox /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=25f3508feda043e697adb9006ea5f770-Gesam
*** -
Moin,
Get-MailboxPermission MAILBOX -> liefert Vollzugriff auf das Postfach
Get-AdPermission MAILBOX-DN -> liefert Send As Berechtigung auf das Postfach
Get-MailFolderPermission MAILBOXNAME\FOLDERNAME -> liefert die Ordner-Berechtigungen auf genau EINEN Ordner
Leider kennt MailboxFolderPermission keine Rekursion, d.h. hier muss man sich mit einem via Get-MailboxFolderStatistics (!!!) behelfen:
Beispiel: http://serverfault.com/questions/333964/permission-mailbox-subfolders
Leider ist da keine Pipeline möglich, da die CMDLETs keine kompatiblen Parameter austauschen, d.h. es muss eine Schleife programmiert werden.
Get-MailboxFolder geht nicht, da dies im Standard laut RBAC nur der Mailbox-Owner ausführen darf. Das CMDLET wird technisch für OWA gebraucht.
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
- Als Antwort vorgeschlagen Evgenij Smirnov Freitag, 27. Mai 2016 11:16
-
Moin,
versuchen Sie es mit folgendem Script - evtl. die Ausgabe statt "FT" in der vorletzten Zeile anpassen:
-----------------------
# Code to get mailbox # folder permissions for all folders in
# a mailbox.
#
# Example:
# Get-MailboxFolderPermissionsForAllFolders -Mailbox egon.tester@company.com -User liese.mueller@company.com[CmdletBinding()]
param (
[Parameter( Mandatory=$true)]
[string]$Mailbox,
[Parameter( Mandatory=$true)]
[string]$User,
)# Liste der Ordner, die nicht bearbeitet werden:
$exclusions = @("/Sync Issues",
"/Sync Issues/Conflicts",
"/Sync Issues/Local Failures",
"/Sync Issues/Server Failures",
"/Recoverable Items",
"/Deletions",
"/Purges",
"/Versions",
"/Synchronisierungsprobleme",
"/Synchronisierungsprobleme/Konflikte",
"/Synchronisierungsprobleme/Lokale Fehler",
"/Synchronisierungsprobleme/Serverfehler",
"/Gelöschte Elemente"
)
# Read list of mailbox folders, exclude above listed folders
$mailboxfolders = @(Get-MailboxFolderStatistics $Mailbox | Where {!($exclusions -icontains $_.FolderPath)} | Select FolderPath)# Loop over all folders
foreach ($mailboxfolder in $mailboxfolders)
{
$folder = $mailboxfolder.FolderPath.Replace("/","\")
if (($folder -match "Top of Information Store") -or ($folder -match "Oberste Ebene des Informationsspeichers"))
{
$folder = $folder.Replace("\Top of Information Store","\")
$folder = $folder.Replace("\Oberste Ebene des Informationsspeichers","\")
}
$identity = "$($mailbox):$folder"# Get folder permission
Write-Host "Reading permissions for $user to $identity" -ForeGroundColor Green
Get-MailboxFolderPermission -Identity $identity -User $user -ErrorAction SilentlyContinue | FT
}-----------------------
Den Code als "Get-MailboxFolderPermissionsForAllFolders.ps1" speichern und auf dem Exchange Server ausführen.
Ich hoffe, es hilft weiter...
Schöne Grüße aus Isernhagen
Andreas Ohlendorf
- Als Antwort vorgeschlagen AOhlendorf Freitag, 27. Mai 2016 16:05
- Als Antwort markiert Davorin Scharping Montag, 30. Mai 2016 07:15
-
Und dann noch in eine Schleife packen, damit man wirklich die Rechte auf *allen* Postfächern rausbekommt ;-)
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
-
Servus Evgenij, du konntest mir schon einige Male helfen - ich hoffe, auch hier :)
Der Thread ist zwar schon etwas älter, aber du bist sicher noch dabei. Wie kann ich deinen Hinweis "alles in eine Schleife packen" verstehen? Wie würde eine solche Schleife aussehen und welche Vorteile hätte sie gegenüber dem originären Script?
Danke schon mal vorab - bin aber in machen Dingen noch Newbie
Gruß Ingo
-
Moin,
der veröffentlichte Code untersucht ja nur eine Mailbox. Die ursprüngliche Aufgabe lautete "Berechtigungen auf allen Mailboxen auslesen" - daher muss man den Code für eine Mailbox in einer Schleife sukzessive auf jede Mailbox anwenden.
Evgenij Smirnov
-
Hallo Andreas, auch wenn der Thread schon einige Zeit her ist, hoffe ich, Sie können mir helfen, denn das hier ist genau was ich suche.
Mein Problem beim Ausführen ist, dass ich bei [CmdletBinding()] die Meldung "unerwartetes Attribut" und gleich in der Folge bei param ( "Unerwartetes Token param in Ausdruck oder Anweisung" erhalte.
Ich bin leider nicht der große Shellspezialist, sodass ich auch bei GOOGLE nichts finden konnte, welches mein Problem löst.
Das Script wurde ich gerne auf einem EX2012 auf Basis 2016 Standard-Server ausführen.
Danke schon mal vorab.
Beste Grüße
Ingo
-
Dann ist Dir beim Kopieren des PowerShell-Code ein Fehler unterlaufen. Manchmal verschluckt das Forum aber auch Zeichen oder fügt unsichtbar welchen hinzu. Aus diesem Grund sollte man in Foren auch immer Code als Code posten und nicht als Fließtext.
Evgenij Smirnov