Active Directory ist eines dieser Produkte, die dazu neigen, immer größer zu werden. Es ist ein Produkt, an dem viele Leute jeden Tag Änderungen vornehmen und letztendlich diesen enormen Haufen von Zeug generieren, der irgendwie doch noch funktioniert. Sogar die IT-Abteilung mit den besten Absichten scheint immer eine Active Directory-Umgebung zu haben, die unendlich viele Benutzerkonten hat, die nicht mehr benötigt werden, GPOs die mit OUs verbunden sind, von denen die Leute nicht mal wussten, dass sie überhaupt noch existieren und Computerkonten, die sich auf Computer beziehen, die längst nicht mehr da sind. Dieser Zustand scheint an Leute heranzupirschen. Eines Tages setzt sich jemand vor die Active Directory für Nutzer und Computer (ADUC) und hat diesen Moment, in dem sie sagen: “Wow! Das muss mal aufgeräumt werden.”
Sobald jemand in Ihrer Organisation diesen Moment hat, wird es wahrscheinlich eine entmutigende und überwältigende Aufgabe sein. Es mag sein, dass Sie das Projekt “Zeug aufräumen” in Angriff nehmen, aber Sie werden bald feststellen, dass Rechtsklicken und Löschen alleine, das Problem nicht wird lösen können. Es gibt viele Möglichkeiten, dieses Projekt zum Erfolg zu führen, wobei die erste Aufgabe darin besteht, zu definieren, was genau “Aufräumen” überhaupt bedeutet. In diesem Artikel konzentrieren wir uns auf nicht verwendete Benutzerkonten. Genauer gesagt konzentrieren wir uns auf drei Attribute, die ein Benutzerkonto möglicherweise als “löschbar” einstufen. Diese Attribute sind deaktivierte Konten, Konten, die in x-Tagen nicht verwendet wurden, und Konten mit abgelaufenen Kennwörtern.
Eine der einfachsten Möglichkeiten, diese potenziell nicht verwendeten Konten zu finden, ist die Nutzung von PowerShell. Die ActiveDirectory PowerShell ist ein Modul, das ein äußerst nützliches Cmdlet namens Search-AdAccount enthält, mit dem Abfragen erstellt und genau das zurückerhalten werden kann, was wir benötigen. Bevor dieses Cmdlet jedoch verwendet werden kann, müssen Sie das RSAT-Paket (Remote Server Administration Tools) von Microsoft herunterladen. Sobald das Paket installiert ist, sollten Sie das ActiveDirectory-Modul haben, und schon können Sie loslegen! Damit einer der folgenden Codes funktioniert, gehe ich davon aus, dass Sie sich an einem Windows-PC befinden, der mit der Domäne verbunden ist, in der sich die Nutzer befinden, die Sie suchen möchten. Nachdem das gesagt wurde, lassen Sie uns die Sache angehen!
Deaktivierte Konten in Active Directory finden
Die erste Aufgabe besteht darin, deaktivierte Konten zu finden. Um deaktivierte Konten zu finden, verwenden wir das Cmdlet Search-ADAccount. Dieses Cmdlet verfügt über einen einzelnen Parameter namens Disabled, der diese Aufgabe zu einem Kinderspiel macht. Führen Sie einfach Search-AdAccount-AccountDisabled aus und voilá, alle Ihre deaktivierten Konten werden angezeigt. Beachten Sie unten, dass ich den Parameter UsersOnly verwendet habe, da dieses Cmdlet auch deaktivierte Computerkonten finden kann.
C:> Search-ADAccount -UsersOnly -AccountDisabled -Server dc
AccountExpirationDate :
DistinguishedName : CN=Guest,CN=Users,DC=mylab,DC=local
Enabled : False
LastLogonDate :
LockedOut : False
Name : Guest
ObjectClass : user
ObjectGUID : 89cfaf2b-c6d8-4ae0-a720-e2da7d201717
PasswordExpired : False
PasswordNeverExpires : True
SamAccountName : Guest
SID : S-1-5-21-4117810001-3432493942-696130396-501
UserPrincipalName :
…………
Inaktive Benutzerkonten im Active Directory finden
Ein weiterer üblicher Verdächtiger, der gesäubert werden muss ist Inaktive Nutzerkonten und der ist ein weniger schwerer zu finden. “Inaktiv” ist ein subjektiver Begriff, daher definieren wir für unsere Zwecke “inaktiv” als älter als 30 Tage, da jeder Benutzer einen LastLogonTimeStemp-Wert hat. Im Internet werden Sie viele Artikel über die Suche nach inaktiven Nutzern finden, aber einige Leute merken nicht, dass es viel einfacher ist, als komplizierte AD LDAP-Filter zu erstellen. Der Support ist in Search-AdAccount systemeigen.
Wir können Search-AdAccount-AccountInactive -UsersOnly -Timespan 30.00:00:00 verwenden, um sofort alle AD-Benutzerkonten zu finden, die innerhalb der letzten 30 Tage nicht verwendet wurden.
Es gibt jedoch einen Vorbehalt. Microsoft aktualisiert nur alle 14 Tage das LastLogonTimestamp-Attribut, das mit dem LastLogonDate identisch ist, um Vervielfältigungsanstürme zu verhindern. Aufgrund dieser Eigenschaft von AD ist die Verwendung dieser Methode (oder auch Get-AdUser oder Get-AdComputer mit dem erweiterten Filter) nicht 100%ig genau, wenn Sie versuchen, Konten mit einer Inaktivität älter als 14 Tage zu finden. Seien Sie also gewarnt.
Schließlich müssen wir alle AD-Benutzer finden, die ein abgelaufenes Kennwort haben, die nicht mehr benötigt werden. Dieser ist knifflig, weil “aktive” Benutzerkonten ein abgelaufenes Passwort haben könnten, wenn es gerade erst abgelaufen ist. Ich muss also nicht nur abgelaufene Passwörter finden, sondern auch, wie lange sie abgelaufen sind. Wenn sie abgelaufen sind, sagen wir vor 30 Tagen oder länger, kann ich davon ausgehen, dass diese Benutzerkonten tatsächlich inaktiv sind.
Um herauszufinden, wie lange ein Passwort abgelaufen ist, muss ich zuerst das maximale Passwortalter für die Passwortrichtlinie der Domain finden. Ich kann dies mit dem Cmdlet Get-AdDefaultDomainPasswordPolicy tun.
$MaxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days
Als nächstes kann ich dann alle Benutzerkonten finden, die ein abgelaufenes Passwort haben, dann diese Benutzerkonten filtern, indem ich das letzte Mal sehen, an dem ihr Passwort zuletzt geändert wurde, und kann sicherstellen, dass die maximale Zeit plus 30 Tage vergangen ist (je nachdem wie alt ich das Konto einstufe).
Der Code sieht ungefähr so aus:
Search-AdAccount -PasswordExpired -UsersOnly | Where-Object {((Get-Date) – (Get-AdUser -Filter “samAccountName -eq $_.SamAccountName”).PasswordLastSet) -lt ($MaxPasswordAge + 30)}
Wenn Sie das nächste Mal nach inaktiven Einträgen suchen, sehen Sie sich Search-AdAccount an, um zu sehen, ob es bereits das tut, was Sie tun möchten. Es kann Ihnen eine Menge Zeit sparen!
Adam Bertram ist ein Microsoft Windows Cloud und Datacenter Management MVP. Er hat verschiedene Schulungen verfasst, ist regelmäßiger Mitwirkender zahlreicher Print- und Online-Publikationen und präsentiert auf verschiedenen Benutzergruppen und Konferenzen. Sie können Adam unter adamtheautomator.com oder auf Twitter unter @adbertram finden.