Fehlerbehebung und Informationsbeschaffung mit Bordmitteln So lesen Sie Active Directory mit der PowerShell aus
Anbieter zum Thema
Die PowerShell ist eine mächtige Umgebung, wenn es darum geht, Informationen in Windows auszulesen oder zu bearbeiten. Da die Shell ohnehin in aktuellen Windows-Versionen zur Verfügung steht, können problemlos und ohne zusätzliche Installationen auch Daten aus Active Directory ausgelesen werden.

Wenn das Modul zur Verwaltung von Active Directory in Windows 10 oder Windows Server 2019 installiert ist, kann in der PowerShell auch auf spezifische Informationen von Active Directory zugegriffen werden. Der Befehl „Get-Command Get-Ad*“ zeigt bereits zahlreiche Cmdlets an, mit denen sich Informationen aus Active Directory anzeigen lassen.
Daten zu Computer und Benutzerkonten anzeigen
Die einzelnen Get-Cmdlets können mit Filtern erweitert werden, um die notwendigen Informationen auszulesen. Um zum Beispiel alle Benutzer anzuzeigen, die aktuell nicht deaktiviert sind, wird folgender Befehl verwendet:
get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq true
Um die Anzahl der Active-Directory-Benutzer anzuzeigen, wird der folgende Befehl verwendet:
(Get-ADUser -Filter "Name -like '*'").count
Um die letzte Anmeldung eines Benutzerkontos anzuzeigen, wird der folgende Befehl verwendet:
Get-ADUser „<Name>“ -Properties LastLogonDate | FT -Property Name, LastLogonDate -A
Soll das Anmeldedatum von allen Benutzerkonten angezeigt werden, steht ebenfalls die PowerShell zur Verfügung:
Get-ADUser -Filter {(Enabled -eq $true)} -Properties LastLogonDate | select samaccountname, Name, LastLogonDate | Sort-Object LastLogonDate
Gesperrte Benutzerkonten zeigt das Cmdlet „Search-ADAccount -lockedout“ an. Über die PowerShell können die Konten auch wieder entsperrt werden, zum Beispiel mit „Get-ADUser -Identity joost | Unlock-ADAccount“
Auch die Computerkonten in Active Directory lassen sich auslesen. Mit der Pipeline kann das Ergebnis an „Select“ übergeben und die Anzeige nach den gewünschten Informationen gefiltert werden:
Get-ADComputer -filter ‘name -like “*”’ -Properties * | select name,OperatingSystem,IPv4Address
Um nicht aktive Computer anzuzeigen, steht auf Github das Skript „GetInactiveComputer.ps1“ zur Verfügung. Es muss lediglich gestartet werden, um die gewünschten Informationen direkt in der Powershell anzuzeigen.
Wie Benutzerkonten können auch Computerkonten in Active Directory gezählt werden:
(Get-ADComputer -Filter "Name -like '*'").count
Daten zu Domänencontrollern zeigt das Cmdlet „Get-Addomaincontroller“ an. Um Informationen zu allen Domänencontrollern in einer Gesamtstruktur anzuzeigen, kann der folgende Befehl verwendet werden:
(Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ }
Microsoft Active Directory Documentation Script
Mit dem kostenlosen Microsoft Active Directory Documentation Script können umfassende Informationen aus Active Directory ausgelesen werden.
Nach dem Download des Archivs und dessen Extraktion, startet das Skript mit dem Befehl „.\ADDS_Inventory_V3.ps1“. Ändert sich die Version, ist das am Namen der Skriptdatei zu erkennen. Danach liest das Skript ohne weitere Installation die Daten aus und speichert diese in einer HTML-Datei im gleichen Verzeichnis. Der HTML-Bericht kann in jedem Browser oder jedem anderen Tool angezeigt werden, das HTML versteht. Im Skript sind umfassende Informationen zur generellen Infrastruktur von Active Directory zu erkennen.
Das Skript „Get Service Accounts“ ist sinnvoll parallel zu Microsoft Active Directory Documentation Script einsetzbar. Nach dem Start fragt das Skript nach Computernamen. Anschließend durchsucht das Skript die Computer nach Dienstkonten, an denen eine Anmeldung mit Domänenbenutzern stattfindet. Die Daten speichert das Skript in Textdateien des gleichen Verzeichnisses.
Ein weiteres Skript in diesem Bereich ist „ADinfo.ps1“. Auch dieses Skript kann Daten aus Active Directory auslesen. Die Skripte können auch bearbeitet werden. Um das Skript zu verwenden wird eine neue Textdatei erstellt und die Befehle in die Datei kopiert. Als Name bietet sich „ADinfo.ps1” an. Das Skript zeigt die Daten direkt in der PowerShell an, es wird kein Bericht erstellt.
Active Directory Health Check
Vom gleichen Entwickler steht das Skript „Active Directory Health Check“ zur Verfügung. Dieses startet mit „.\ADHealthCheck_v2_Signed.ps1“. Das Skript gibt seinen Bericht als Word-Datei aus. Daher sollte es nicht direkt auf einem Domänencontroller gestartet werden, sondern auf einer Arbeitsstation, auf der auch Word installiert ist, und die Mitglied in Active Directory ist. Das Microsoft Active Directory Documentation Script ist in diesem Fall einfacher nutzbar, da kein zusätzliches Programm notwendig ist.
Auf Tech Wizard ist das Skript „Active Directory Health Check” zu finden. Das Skript erstellt bei Ausführung von „ADHealthCheck.ps1“ einen HTML-Bericht, mit dem der Zustand von Active Directory überprüft werden kann.
Gruppenrichtlinien auslesen
Mit der PowerShell können auch Informationen zu Gruppenrichtlinien der Domäne ausgelesen werden. Vor allem zur Fehlersuche ist es sinnvoll zu wissen, mit welchen OUs eine Gruppenrichtlinie verknüpft ist, ob eine Richtlinie vererbt oder erzwungen ist und vieles weitere mehr. Die Syntax dafür lautet:
Get-GPOReport -All -Domain "joos.int" -ReportType HTML -Path "C:\temp\report.html"
DNS-Daten auslesen
Active Directory und DNS arbeiten eng zusammen. Daher ist es auch möglich, in der PowerShell DNS-Zonen auf Domänencontrollern auszulesen, zum Beispiel mit „Get-DnsServerZone -ComputerName dc01“.
(ID:47157148)