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.

Print Friendly, PDF & Email
  • Was this Helpful ?
  • yes   no