Mobile-Menu

Fehlerbehebung und Informationsbeschaffung mit Bordmitteln So lesen Sie Active Directory mit der PowerShell aus

Autor / Redakteur: Thomas Joos / Dipl.-Ing. (FH) Andreas Donner

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.

Firmen zum Thema

Auch bei der Arbeit mit Active Directory kann die PowerShell ein nützliches Werkzeug sein.
Auch bei der Arbeit mit Active Directory kann die PowerShell ein nützliches Werkzeug sein.
(Bild: © Alexander - stock.adobe.com)

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.

Bildergalerie
Bildergalerie mit 9 Bildern

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“.

Active Directory im Fokus
Bildergalerie mit 55 Bildern

(ID:47157148)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist