14 min read
Microsoft Teams – 3. Teil der Graph PowerShell Reihe
MVP Damien Scoles berichtet über seine Erfahrungen mit Microsoft Graph. In seinem dritten Artikel geht er näher auf...
ScriptRunner Blog
Die PowerShell ist eine mächtige Umgebung, wenn es darum geht in Windows Informationen auszulesen. Nicht nur bei Scripten zum Bearbeiten von Servereinstellungen oder Workloads kann die PowerShell wichtige Hilfe sein, sondern auch für das umfassende Auslesen von Informationen und für das Erstellen von Berichten. Wir zeigen in diesem Beitrag einige PowerShell-Cmdlets, die auch in Kombination miteinander umfangreiche Informationen aus Active Directory (AD) auslesen können. Diese Informationen sind auch für das Troubleshooting interessant. Noch schneller als mit diesen gescripteten PowerShell-Queries funktionieren diese AD Abfragen übrigens mit den in ScriptRunner eingebauten Queries.
Wenn das Modul zur Verwaltung von Active Directory in Windows 10/11 oder Windows Server 2019/2022 installiert ist, können Sie in der PowerShell auch auf spezifische Informationen von Active Directory (AD) zugreifen. Der Befehl "Get-Command Get-Ad*" zeigt bereits zahlreiche Cmdlets, die Informationen aus Active Directory anzeigen können.
Das funktioniert auch problemlos über das Netzwerk. Mit dem Cmdlet "Get-Command -Module ActiveDirectory" lassen sich alle Cmdlets anzeigen, mit denen Active Directory verwaltet werden kann. Der Befehl "Get-Module -ListAvailable" zeigt wiederum alle Module an. So lassen sich auch die Namen der anderen Module anzeigen, und mit "Get-Command" deren Cmdlets auslesen.
Die einzelnen Get-Cmdlets können mit Filtern erweitert werden. Wollen Sie zum Beispiel alle Benutzer anzeigen, die aktuell nicht deaktiviert sind, verwenden Sie:
get-aduser -ldapfilter "(&(&(objectCategory=user)(userAccountControl=512)))" | where-object -property enabled -eq true
powershell-ad-infos-01
Informationen von Benutzern aus AD auslesen
Um die Anzahl der Active Directory-Benutzer (AD user) anzuzeigen, verwenden Sie:
(Get-ADUser -Filter "Name -like '*'").count
Soll die letzte Anmeldung eines Benutzerkontos angezeigt werden, steht ebenfalls die PowerShell mit verschiedenen Parametern zur Verfügung:
Get-ADUser "<Name>" -Properties LastLogonDate | FT -Property Name, LastLogonDate -A
Auch das Anmeldedatum aller Benutzerkonten lässt sich in der PowerShell als Liste anzeigen:
Get-ADUser -Filter {(Enabled -eq $true)} -Properties LastLogonDate | select samaccountname, Name, LastLogonDate | Sort-Object LastLogonDate
Gesperrte Benutzerkonten lassen sich mit "Search-ADAccount -lockedout" anzeigen. Über die PowerShell können die Konten auch wieder entsperrt werden, zum Beispiel mit "Get-ADUser -Identity joost | Unlock-ADAccount"
Um auch die Computerkonten aus AD anzuzeigen, stehen weitere Cmdlets zur Verfügung. 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
Wie Benutzerkonten, können Sie Computerkonten in Active Directory zählen:
(Get-ADComputer -Filter "Name -like '*'").count
Domänencontroller auslesen
Beim Auslesen von Informationen aus dem Active Directory spielen natürlich vor allem Domänencontroller in der Umgebung eine wichtige Rolle. Um sich die Daten zu Domänencontrollern anzuzeigen, verwenden Sie das Cmdlet "Get-Addomaincontroller" an. Wollen Sie Informationen zu allen Domänencontroller in der Umgebung anzeigen, können Sie die Daten auch filtern, zum Beispiel mit:
(Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ }
Informationen zu Domänencontrollern in der PowerShell anzeigen
Wir kommen später in diesem Beitrag noch zu weiteren Möglichkeiten für dieses Cmdlet.
Mit dem kostenlosen Microsoft Active Directory Documentation Script können Sie sich einen Überblick verschaffen, welche Möglichkeiten PowerShell-Scripte zum Auslesen von Informationen bieten. Sie müssen nach dem Extrahieren das Script nur starten. Das Script kann auch Berichte erstellen.
Mit einem PowerShell-Script können Sie auch umfangreiche Informationen aus AD auslesen
Ein weiteres Script in diesem Bereich ist "ADinfo.ps1".
Nach dem Starten zeigt das Script ebenfalls Informationen aus dem Active Directory an.
Auch das Ausgeben von Informationen aus der PowerShell in HTML-Dateien ist kein Problem für die PowerShell
Die PowerShell bietet aber noch mehr Möglichkeiten. Auch das Auslesen von Gruppenrichtlinien ist möglich, inklusive dem Erstellen von Berichten. Der Befehl dazu sieht folgendermaßen aus:
Get-GPOReport -All -Domain "joos.int" -ReportType HTML -Path "C:\temp\report.html"
In der PowerShell können Sie auch mit "Get-ADDefaultDomainPasswordPolicy" die Einstellungen der Kennwortrichtlinie in der Domäne anzeigen. Die Einstellungen werden in der Gruppenrichtlinienverwaltungskonsole (gpmc.msc) für die entsprechende Richtlinie gesteuert. Der Pfad für die Konfiguration der Kennwortrichtlinie ist "Computerkonfiguration/Richtlinien/Windows-Einstellungen/Sicherheitseinstellungen/Kontorichtlinien/Kennwortrichtlinien".
Active Directory und DNS arbeiten eng zusammen. Kommt es zu Problemen in Active Directory, oder ist eine Dokumentation der DNS-Zonen notwendig, kann das sehr leicht mit "Get-DnsServerZone -ComputerName <DNS-Server>" erfolgen.
Die DNS-Einträge in Active Directory spielen eine wichtige Rolle, damit die Domänencontroller sich untereinander verbinden können. Die Überprüfung kann auch in der Befehlszeile mit "nslookup" durchgeführt werden:
In der PowerShell können Sie über die verschiedenen Cmdlets auch Daten einzelner Domänen abfragen. Die Cmdlets "Get-ADDomain" und "Get-ADForest" zeigen Informationen zu Gesamtstrukturen und den Domänen an. Mit Pipes lassen sich Ergebnisse von Cmdlets an weitere Cmdlets weitergeben, zum Beispiel bei "Get-ADDomainController". Sinnvoll ist das zum Beispiel, wenn Sie die FSMO-Rollen pro Domäne anzeigen wollen. In jeder Domäne gibt es die drei FSMO-Rollen, die Sie mit dem folgenden Befehl anzeigen:
Get-ADDomain | Select InfrastructureMaster, RID-Master, PDCEmulator
Schemamaster und Domänennamenmaster gibt es nur einmal pro Gesamtstruktur. Diese Informationen lassen sich wiederum mit dem CMDlet "Get-ADForest" anzeigen:
Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster
Mit "Get-ADDomain" lassen sich zunächst die Betriebsmaster der Domäne (Infrastruktur, RID und PDC) anzeigen, der DNS-Name, die Domänencontroller, der Betriebsmodus, die wichtigsten Organisationseinheiten und weitere Informationen.
Das Cmdlet "Get-ADForest" zeigt zusätzlich noch den Domänennamenmaster, den Schemamaster, die Standorte, UPN-Suffixe und die Domänen an. Die beiden Cmdlets liefern in wenigen Sekunden alle relevanten Informationen zu Domänen, Strukturen und Gesamtstrukturen. Wollen Sie die FSMO-Rollen eines einzelnen Domänencontrollers anzeigen verwenden Sie:
(Get-ADDomainController).OperationMasterRoles
Anzeigen von Informationen der Gesamtstruktur und Domänen
In der PowerShell können Sie auch die Domänencontroller anzeigen, die eine bestimmte Rolle haben, zum Beispiel "PDC-Master":
Get-ADDomainController -Filter {OperationMasterRoles -like "PDC*"} | Select Name
Wer einen tiefergehenden Blick zu Domänencontrollern erhalten will, verwendet das Cmdlet "Get-ADDomaincontroller" für Domänencontroller. Hier sehen Sie auch die IP-Adresse und die FSMO-Rollen, die auf dem Domänencontroller aktiv sind. Zusätzlich sehen Sie hier auch, welche Domänencontroller als globaler Katalog konfiguriert sind und welches Betriebssystem in welcher Edition auf dem Server installiert ist. Auch der Standort, zu dem der Domänencontroller zugewiesen ist, und auf welche Ports der Server im Netzwerk hört sind hier zu finden.
Informationen zu Domänencontrollern aus dem Active Directory auslesen
Löschschutz in der PowerShell abfragen und setzen
Der Löschschutz in Active Directory verhindert, dass Objekte versehentlich gelöscht werden. Ob der Schutz aktiv ist, lässt sich in der PowerShell überprüfen. Es ist über diesem Weg aber auch möglich den Schutz auch gleich für ein Objekt zu aktivieren:
Get-ADObject ‹DN des Objekts› -Properties ProtectedFromAccidentalDeletion
Aktivieren lässt sich der Löschschutz mit:
Set-ADObject ‹DN des Objekts› -ProtectedFromAccidentalDeletion $true
Die Verwaltung von Active Directory Benutzern und Gruppen gehört zu den zentralen, wiederkehrenden Aufgaben der IT-Administration. In diesem Webinar zeigen wir Ihnen, wie diese Aufgaben zeitsparend mit PowerShell standardisiert, automatisiert und delegiert werden können.
Schon bei der Installation von ScriptRunner werden verschiedenste Queries mit ausgeliefert. Häufige Use Cases sind AD-Queries, welche direkt innerhalb der Windows Domäne ausgeführten werden können.
Auch für Azure stehen die passenden Queries schon bei Auslieferung bereit. Es ist ebenfalls möglich, selbst geschriebene Scripte als Queries auszuführen, hierbei wird die Option „…with a script“ ausgewählt.
Mit der Auswahl von "List of Entries" können vorgefertigte Listen als Auswahl hinterlegt werden, die letzte Option "File of Entries" kann verwendet werden, um Optionen in einer Datei z.B. *.CSV abzurufen.
Okt 30, 2024 by Damian Scoles
MVP Damien Scoles berichtet über seine Erfahrungen mit Microsoft Graph. In seinem dritten Artikel geht er näher auf...
Okt 16, 2024 by Damian Scoles
Wie unterscheidet sich die Exchange Online-Administration mit dem Microsoft Graph PowerShell-Modul vom herkömmlichen...
Okt 8, 2024 by Damian Scoles
Die ein oder andere Hürde steht Nutzern im Weg, wenn sie anfangen Graph zu nutzen. In drei Teilen liefert Damian Hilfe....
Thomas Joos ist freiberuflicher IT-Berater und seit 1992 in der IT tätig. Er hat mehr als 90 praktische Fachbücher veröffentlicht und schreibt für zahlreiche IT-Publikationen wie c't, PC Magazin, PC Welt, IT Administrator, Computerwoche und Heise Security.