The estimated reading time 1 minutes
Auslesen der Stellvertreterberechtigung für alle Benutzer
Vor Migrationen oder auch anderen Umstellung ist es immer wieder interessant, auf welchen Postfächern sogenannte Stellvertreter eingerichtet sind. Zur Erinnerung wo der Benutzer diese setzen kann:
Diese Information wird ebenfalls in ein AD-Attribut geschrieben und kann somit auch per Powershell ausgelesen werden (einfache Möglichkeit auf dem DomainController in ISE oder direkt Powershell).
In neueren Servergenerationen werden die ActiveDirectory Cmdlets automatisch importiert (ansonsten vor dem Ausführen des Skriptes „Import-Module ActiveDirectory“ starten).
Get-ADObject -Filter * -Properties * -SearchBase "OU=DEMO,DC=demo02,DC=it-koehler,DC=com" | Where-Object {$_.publicDelegates -ne $null} | Select-Object DisplayName,userPrincipalName,mail,publicDelegates | Sort-Object DisplayName | ft -AutoSize -Wrap
Im Attribute „publicDelegates“ werden Stellvertreter gesetzt (und können somit auch ausgelesen werden).
Nun ja die Ausgabe ist schon mal nicht ganz schlecht für den ersten Überblick.
Mein Ziel war es nun diese noch etwas schöner zu formatieren.
Deshalb habe ich dieses Skript entworfen:
Skript nochmals für Sortierung nach SamAccountName angepasst (17.08.2017)
#distinguished name of the ou $distname = "OU=DEMO,DC=demo02,DC=it-koehler,DC=com" $pd = (Get-ADObject -Filter * -Properties * -SearchBase "$distname" | Where-Object {$_.publicDelegates -ne $null} | Sort-Object SamAccountName ) #listview with distinguished name Write-Host "##### Listview #####" Write-Host " " foreach ($delegates in $pd){ $ident = $delegates.DistinguishedName $DisplayName = $delegates.DisplayName $perm = @(Get-ADObject -Identity "$ident" -Properties * | Select-Object publicDelegates -ExpandProperty publicDelegates | Out-String) $perm = $perm Write-Host "Get user delegation for" Write-Host "User:" $DisplayName Write-Host $perm } #tableoverview Write-Host "##### Tableview #####" foreach ($delegates in $pd){ $ident = $delegates.DistinguishedName $DisplayName = $delegates.DisplayName $perm = @(Get-ADObject -Identity "$ident" -Properties * | Select-Object SamAccountName,Mail,@{n='Delegations';e={$_.publicDelegates-replace '^CN=|,.*$'}}) $perm | ft -AutoSize -Wrap } pause
Das Skript beinhaltet keine großen Abfragen und Fehlerbehandlungen.
Bin gerne für Verbesserungsvorschläge offen.