Active Directory - Nutzerobjekte Filtern, dessen Konto ein Ablaufdatum haben

GroovyGrammer

Cadet 4th Year
Registriert
Dez. 2014
Beiträge
110
Servus zusammen,

es geht um folgendes Datum in meiner Active-Directory-Umgebung:

AD >> Nutzerobjekt >> Eigenschaften >> Konto -> Konto läuft ab

Wie kann ich am einfachsten alle Nutzerobjekte filtern (und meinetwegen das Ergebnis in eine Datei schreiben), dessen Konto zu einem bestimmten Konto abläuft?

Die erweiterte Suche will mir entsprechendes nicht anbieten, weswegen ich die Frage gerne an euch richte. Vielen Dank!

vg

GroovyGrammer

Nachtrag:

Ich habe ein Skript gefunden auf https://www.google.de/url?sa=t&rct=...tor.eu/?p=67&usg=AOvVaw0RShKjQC0sExs5P8DJW_sE , das in die Richtung geht. Allerdings sind meine PS-Kenntnise sehr verschütt im Moment.


$filter = "(&(objectClass=user)(objectCategory=person))"
$Allusers = New-Object system.DirectoryServices.DirectorySearcher([adsi]"",$filter)
$Allusers.pagesize = 5000 #Das Objekt kann bis zu 5000 Benutzer aufnehmen
$users=$Allusers.FindAll()
#cls
'Ablaufdatum Username'
foreach($suser in $users)
{
#"Testing $($suser.properties.item(""distinguishedname""))"
$user = [adsi]"LDAP://$($suser.properties.item(""distinguishedname""))" #Jedes Objekt hat einen vollqualifizierten Namen (distinguished name, DN).
$AcctExp = $user.accountExpires.Value
$lngValue = $user.ConvertLargeIntegerToInt64($AcctExp)
#Wenn das ExpirationDate grösser wie das grösst mögliche Datum ist, dann läuft der Account nie ab.
If ($lngValue -gt [DateTime]::MaxValue.Ticks) #MaxValue.Ticks ist das grösst mögliche Datum im Kalender(December 31, 9999)
{
$lngValue = 0
}
# Convert 64-bit integer into DateTime.
$Date = [DateTime]$lngValue
If ($Date -eq 0)
{
# Dieser Account läuft nie ab
}
Else #Alle abgelaufenen Accounts
{
# Convert Active Directory ticks to PowerShell ticks.
# Also convert from UTC to local time.
$AcctExpires = $Date.AddYears(1600).ToLocalTime()#Man fügt 1600 Jahre dazu, da accountExpires die Nanosekunden seit dem 1. Januar 1601 angibt
$AcctExpires = $AcctExpires.AddDays(-1)
$AcctExpires = $AcctExpires.ToString("yyy-MM-dd")
$Date2Weeksago = (Get-Date).AddDays(-14) #####HIER KANN MAN die 2 WOCHEN AB HEUTIGEM DATUM EINSTELLEN
$Date2Weeksago = $Date2Weeksago.ToString("yyy-MM-dd")
$AccountName = $user.properties.item("CN")

if ($AcctExpires -lt $Date2Weeksago) #Wenn das Expire Date kleiner wie das Datum vor 2 Wochen ist, so wird er ausgegeben
{
$Ausgabe= -join($AcctExpires,' ', $AccountName)
$Ausgabe
}

}

} #foreach
 
Zuletzt bearbeitet:
Schau doch einfach mal in der Powershell mit "Get-ADUser" dort kann man auch viele Felder abfragen. Das Feld dafür wäre dann accountExpires.
 
Hallo Icki,

danke für Deine Antwort. Aber wie nutze ich die Abfrage "accountExpires" PS, wenn das Datum unbekannt ist, der Account aber trotzdem zu einem bestimmten Datum abläuft?

Danke!
Ergänzung ()

Habe zwischenzeitlich eine Lösung gefunden. Thema kann geschlossen/gelöscht werden.
 
Zurück
Oben