Exchange 2007: Berechtigungen auslesen per Powershell
Erstellt von Roland am Freitag 6. November 2009
Aus meiner heutigen Powershell-Session mit meinem Kollegen Carsten ist ein Script als Funktion get-permissions entstanden, mit dem man die Postfächer ausgeben kann, auf die ein einzugebender User die Berechtigung “Vollzugriff” (fullaccess) bzw. “Senden Als” (SendAs) hat. Es werden beide Rechte für alle Postfächer in der Organisation geprüft. Bei größeren Umgebungen kann ein Durchlauf etwas dauern.
Das Script fordert nach dem Aufruf zur Eingabe des Logon-Namens des Users auf, für den die Berechtigungen geprüft werden sollen. Die Ausgabe des Ergebnisses erfolgt sowohl in die Shell, als auch in die Datei c:\logonname.txt (Punkte im Logonnamen werden durch Bindestriche ersetzt). Bei Fragen zum Script könnt Ihr Euch gerne an mich wenden.
Hier das Script:
function get-permissions { $AllUsers = @() $mailboxes = @() $name=read-host "Please enter the Logonname" $AllUsers += Get-Mailbox -Resultsize Unlimited foreach ($user in $AllUsers) { $perm = Get-Mailboxpermission -Identity $user foreach ($permission in $perm) { if ($permission.user.tostring() -like "*$name*") { $obj = new-object psObject $obj |Add-Member -MemberType noteproperty -Name "Mailbox" -Value $user.Displayname if ($permission.Accessrights[0] -like "*fullaccess*") { $obj |Add-Member -MemberType noteproperty -Name "Vollzugriff" -Value "True" } Else { $obj |Add-Member -MemberType noteproperty -Name "Vollzugriff" -Value "False" } if ($permission.Accessrights[0] -like "*SendAs") { $obj |Add-Member -MemberType noteproperty -Name "Senden Als" -Value "True" } Else { $obj |Add-Member -MemberType noteproperty -Name "Senden Als" -Value "False" } $mailboxes += $obj } } } $mailboxes $filename = $name.Replace(".","-") $mailboxes | export-csv c:\$filename.txt -NoTypeInformation -encoding default }



