Vollzugriffsberechtigungen Exchange Online mit Zusatzinformationen

The estimated reading time 3 minutes

Mitte März habe ich eine Mail eines Lesers (Sebastian) mit der Frage bekommen, ob es möglich ist alle Vollzugriffsberechtigungen auszulesen und diese Info dann noch mit weiteren Informationen anzureichern. Konkret ging es um die Abteilung, sprich es sollte Postfach, berechtigter Benutzer und Abteilung des Berechtigten in eine CSV ausgegeben werden.

Wir hatten dann einige Mal hin und her geschrieben bis wir die finale Lösung hatten. Diese möchte nun auch auf meinen Blog für alle freigeben.

##exonline:
$csvpath = "C:\temp\2024-05-29-fullaccess-exon.csv"
$mbs = Get-Mailbox -ResultSize 5000 | Where-Object{!($_.name -match "DiscoverySearchMail") } |Sort-Object Name
"Mailbox;Mailboxtype;Department;FullAccessUser;Permissions;DepartmentFullAccessUser;IsInherited"| Out-File -FilePath $csvpath -Encoding utf8 -Append
foreach($mb in $mbs){
    $email = ($mb).PrimarySmtpAddress
    $type = ($mb).RecipientTypeDetails
    $permissions = Get-mailboxPermission -Identity $email| Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "NT AUTHORITY\SELF")}
    if($permissions){
        $userinfo = $email| get-user
        $dep1 = ($userinfo).Department
        Write-Host "User: $email , mailboxtype: $type, Department: $dep1"
        foreach($perm in $permissions){
         
            $user = ($perm).User
            $fullaccuser = $user | get-user
            $dep2 = ($fullaccuser).Department
            $accessright = $perm | Select-Object accessRights -ExpandProperty accessrights
            $isinherited = ($perm).IsInherited
   
            "$email;$type;$dep1;$user;$accessright;$dep2;$isinherited" | Out-File -FilePath $csvpath -Encoding utf8 -Append
        }
    }
} 
 

Mit einigen kleinen Anpassung können hier auch weitere Informationen ausgelesen und in der CSV Tabelle hinzugefügt werden.

Die CSV sieht dann folgendermaßen aus:

Im Normalfall geht das Skript auch auf einem Exchange Server OnPrem, allerdings konnte ich das bisher noch nicht verifizieren. Eventuell einfach mal ausprobieren.
Lokal könnte es sein, dass die Berechtigung „NT Authority\Self“ zu „NT-AUTORITÄT\SELBST“ wird, falls es ein deutsches System ist.

Weitere Informationen lassen sich wie gesagt relativ einfach hinzufügen.

Dazu können wir uns die Variable $fullaccuser etwas genauer anschauen.

#zugriffsberechtigte Benutzer
#Zeile 16
$fullaccuser | fl
 
#Postfach auf dem der Zugriff eingerichtet ist
#Zeile 10
$userinfo | fl

Diese Eigenschaften des Objektes können dann zusätzlich in eine Variable geschrieben werden also z.B.:

#ab Zeile 16 
$fullaccuser = $user | get-user
$dep2 = ($fullaccuser).Department
$city = ($fullaccuser).City

um diese Information dann noch im CSV sinnvoll zuordnen zu können muss auch die CSV Spalte um das Attribut „City“ erweitert werden:

#Zeile 4 
"Mailbox;Mailboxtype;Department;FullAccessUser;Permissions;DepartmentFullAccessUser;CityFullAccessUser;IsInherited"| Out-File -FilePath $csvpath -Encoding utf8 -Append
#Zeile22 
"$email;$type;$dep1;$user;$accessright;$dep2;$city;$isinherited" | Out-File -FilePath $csvpath -Encoding utf8 -Append

##exonline:
$csvpath = "C:\temp\2024-05-29-fullaccess-exon.csv"
$mbs = Get-Mailbox -ResultSize 5000 | Where-Object{!($_.name -match "DiscoverySearchMail") } |Sort-Object Name
"Mailbox;Mailboxtype;Department;FullAccessUser;Permissions;DepartmentFullAccessUser;CityFullAccessUser;IsInherited"| Out-File -FilePath $csvpath -Encoding utf8 -Append
foreach($mb in $mbs){
    $email = ($mb).PrimarySmtpAddress
    $type = ($mb).RecipientTypeDetails
    $permissions = Get-mailboxPermission -Identity $email| Where-Object { ($_.accessRights -like "*fullaccess*") -and -not ($_.User -like "NT AUTHORITY\SELF")}
    if($permissions){
        $userinfo = $email| get-user
        $dep1 = ($userinfo).Department
        Write-Host "User: $email , mailboxtype: $type, Department: $dep1"
        foreach($perm in $permissions){
         
            $user = ($perm).User
            $fullaccuser = $user | get-user
            $dep2 = ($fullaccuser).Department
            $city = ($fullaccuser).City
            $accessright = $perm | Select-Object accessRights -ExpandProperty accessrights
            $isinherited = ($perm).IsInherited
   
            "$email;$type;$dep1;$user;$accessright;$dep2;$city;$isinherited" | Out-File -FilePath $csvpath -Encoding utf8 -Append
        }
    }
} 

Oben nochmals das komplette Skript mit Stadt als weitere Spalte im CSV.

Bei Fragen gerne einen Kommentar hinterlassen. Sollte euch der Artikel gefallen haben, dann lasst mir bitte ein „Helpful“ da oder auch gerne ein Kommentar.

Viel Erfolg beim Auslesen.

Print Friendly, PDF & Email
Was this article helpful?
YesNo
0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments