The estimated reading time 2 minutes
Bestehende Benutzer über CSV Ablaufdatum hinzufügen
In vielen Unternehmen findet man Accounts von Benutzern die nicht im Unternehmen arbeiten, aber trotzdem aktiv sind. Eine gute Möglichkeit ist es den Account mit einem Ablaufdatum zu versehen. Hierzu habe ich ein kleines Skript entwickelt. Zunächst aber noch ein Befehl der alle Accounts in eine CSV Datei ausgibt, bereits mit Ablaufdatum.
Natürlich muss der Parameter „Search-Base“ für die jeweilige OU Struktur angepasst sein!
Get-ADUser -Filter * -SearchBase "OU=DEMO,DC=demo01,DC=it-koehler,DC=com" -Properties AccountExpirationDate | Select-Object Surname,Givenname,AccountExpirationDate |Export-Csv -Path C:\Temp\expdate-list.csv -Force -Encoding UTF8
Diese CSV Datei könnte nun durch Personal oder andere Abteilungen mit dem Austrittsdatum der Mitarbeiter gepflegt werden.
Nun das Skript, welches die CSV Datei einliest und an Hand dieser Infos das Ablaufdatum des Accounts setzt.
Vorsicht: wenn kein Datum in der CSV gesetzt ist, dann wird bei diesem Benutzer das eventuell vorhandene Ablaufdatum gelöscht!
Im Skript müssen die beiden Variablen „$OU“ und „$CSVPATH“ angepasst werden, wobei OU der distinguished name der zu durchsuchenden OU ist.
#import activedirecory module Import-Module ActiveDirectory #import csv file $csvpath = "C:\temp\expdate-list.csv" $users = Import-Csv -Path "$csvpath" -Encoding UTF8 $ou = "OU=DEMO,DC=demo01,DC=it-koehler,DC=com" Write-Host "following users will be changed: " -ForegroundColor Gray foreach($user in $users ) { $surname = ($user).Surname $givenname = ($user).GivenName $expdate = ($user).AccountExpirationDate #check if date is not empty if($expdate -ne "$null"){ get-aduser -Filter {(GivenName -eq $givenname) -and (Surname -eq $surname)} -SearchBase "$ou" | Set-ADUser -AccountExpirationDate $expdate Write-Host "expirationdate for user $givenname,$surname set to $expdate" -ForegroundColor Green } else { get-aduser -Filter {(GivenName -eq $givenname) -and (Surname -eq $surname)} -SearchBase "$ou" | Set-ADUser -AccountExpirationDate $null Write-Host "expirationdate deleted for: $givenname,$surname " -ForegroundColor Yellow } } #show overview Write-Host " " Write-Host "overview:" Get-Aduser -Filter * -SearchBase "$ou" -Properties AccountExpirationDate | Sort-Object surname | Select-Object Surname,Givenname,AccountExpirationDate
Auch dieses Skript kann innerhalb der ISE auf dem DomainController ausgeführt werden. Oder auch direkt über die Powershell Konsole.
Selbstverständlich lässt sich dies noch erweitern und anpassen. Für meine Zwecke war dies aber zunächst ausreichend.
Verbesserungsvorschläge sind natürlich gerne gesehen.
Wenn weitere Fragen sind, lasst mir einfach einen Kommentar zukommen, sollte euch der Artikel gefallen haben, drückt bitte auf „Helpful“.
Viel Spaß damit.