Skip to the main content.

ScriptRunner Blog

So findest und behebst du Fehler in Active Directory

Inhaltsverzeichnis

 

 

Post Featured Image

Active Directory lässt sich hervorragend mit PowerShell verwalten. Nicht nur das Anlegen von Benutzern und die Konfiguration von Gruppen ist mit der PowerShell möglich, interessant wird es bei der Verwendung für Active Directory im Bereich der Fehlerbehebung und Optimierung. Hier bietet die PowerShell Möglichkeiten, die mit Tools in der grafischen Oberfläche kaum möglich sind. PowerShell-Cmdlets sind eine wertvolle Hilfe, so gut wie alle Fehler in Active Directory zu finden und vor allem unkompliziert zu beheben. In diesem Beitrag zeigen wir Ihnen die wichtigsten Befehle und wofür Sie diese nutzen können.

 

PowerShell-Modul für die Verwaltung von AD

Das PowerShell-Modul, in dem die Cmdlets für die Verwaltung von Active Directory integriert sind, ist auf Domänencontrollern automatisch installiert. Sie können die Cmdlets aber auch problemlos in Windows 10 und Windows 11 installieren. In diesem Fall können Sie Active Directory bequem von einer Arbeitsstation aus verwalten und darüber Fehler beheben. Für die Installation des PowerShell-Moduls sind keine Downloads notwendig, alles was Sie brauchen ist in Windows 10/11 Pro und Enterprise bereits enthalten.

Die optionalen Features sind in Windows 10 und Windows 11 über „Einstellungen\Apps“ zu finden. Bei „Optionale Features“ und „Optionale Features hinzufügen“ steht „RSAT: Tools für Active Directory Domain Services und Lightweight Directory Services” zur Verfügung. Mit der Schaltfläche „Installieren“ erfolgt die Integration des Moduls. Durch die Installation des Features steht auch das PowerShell-Modul für Active Directory zur Verfügung.

Die Integration ist auch auf Servern möglich, wenn auf diesen keine Active Directory-Dienste installiert sind. Dazu verwenden Sie entweder den Server-Manager oder das Windows Admin Center. Hier ist das PowerShell-Modul für Active Directory über „Remoteserver-Verwaltungstools\Rollenverwaltungstools\AD DS- und AD LDS-Tools“ zu finden.

Einfach ist es natürlich, auch hier am besten gleich die Installation selbst mit der PowerShell durchzuführen. Dazu wird der Befehl „Install-WindowsFeature RSAT-AD-PowerShell“ genutzt. Nach der Installation lassen sich die einzelnen Befehle mit dem Cmdlet "Get-Command -Module ActiveDirectory" anzeigen.

Anzeigen der einzelnen Cmdlets für die Verwaltung von Active Directory mit der PowerShell

Anzeigen der einzelnen Cmdlets für die Verwaltung von Active Directory mit der PowerShell

 

Vor der Fehlerbehebung Daten auslesen

Um Fehler in Active Directory zu beheben, ist es zunächst notwendig, den Fehler einzugrenzen. Dazu sind Informationen notwendig, die sich schnell und einfach aus der PowerShell auslesen lassen. Eine Übersicht der Domänencontroller erhalten Sie mit dem Cmdlet "Get-ADDomaincontroller".

getad

Anzeigen der Domänencontroller in der PowerShell

Um die Betriebsmaster für Domäne und Gesamtstruktur auszulesen, verwenden Sie:

 
Get-ADDomain | Select InfrastructureMaster, RID-Master, PDCEmulator

Get-ADForest | Select-Object DomainNamingMaster, SchemaMaster

Auch das Verschieben der Betriebsmaster ist in der PowerShell einfach möglich. Dazu wird das Cmdlet "Move-ADDirectoryServerOperationMasterRole" verwendet. Umfangreichere Informationen zu den Domänencontrollern lassen Sie sich mit dem folgenden Befehl anzeigen:

 (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ }

Oder ausgeschrieben:


Get-ADForest |
Select-Object -ExpandProperty Domains |
ForEach-Object {
Get-ADDomainController -Filter * -Server $_
}

Der Code liest die Eigenschaften aller Domänencontroller für alle Domänen im AD-Forest aus. Zusammen mit den anderen Befehlen in diesem Beitrag hilft das beim Auffinden der Fehler. Diese werden häufig durch fehlerhafte Gruppenrichtlinien ausgelöst. In solch einem Fall kann es sinnvoll sein, die Gruppenrichtlinien als HTML-Bericht zu speichern:

 Get-GPOReport -All -Domain "joos.int" -ReportType HTML -Path "C:\temp\report.html"

 

Testumgebung einrichten

In einer Testumgebung lässt sich die Fehlerbehebung üben. Domänencontroller sind schnell installiert, eine Anleitung ist zum Beispiel auf der Seite "In 17 Schritten zum perfekten Domänencontroller" zu finden. Um in einer Testumgebung eine bestimmte Anzahl an Benutzern auf einmal anzulegen, verwenden Sie dieses kurze Skript:


$pass= "kennw0rt" | ConvertTo-SecureString -AsPlainText -Force

$Nummer=1..20

Foreach ($z in $Nummer) {New-AdUser -Name Schulung$z -Path "OU=Schulung, DC=Joos, DC=int" -enabled $True -ChangePasswordAtLogon $true -AccountPassword $pass}

oder:


1..20 | ForEach-Object {
New-AdUser -Name "Schulung$_" -Path "OU=Schulung, DC=Joos, DC=int" -Enabled $True -ChangePasswordAtLogon $true -AccountPassword $pass
}

Die einzelnen Daten der Umgebung können Sie in den Teilen des Skriptes anpassen, auch die Anzahl der Benutzer, die das Skript anlegen soll.

 

Replikationsfehler in der PowerShell finden

Zu den häufigsten Fehlern in Active Directory gehören Probleme mit der Replikation. Dazu können Sie in der PowerShell zunächst mit "Get-ADReplicationConnection" alle Replikationsverbindungen anzeigen.

Anzeigen der Replikationsverbindungen in Active Directory

Anzeigen der Replikationsverbindungen in Active Directory

Auf Basis dieser Informationen können Sie sich auf die Fehlersuche machen. Wollen Sie zum Beispiel die Replikationsfehler eines Domänencontrollers anzeigen, verwenden Sie den untenstehenden Befehl. Auch hier müssen Sie beim Parameter "-Taget" den jeweiligen Domänencontroller angeben:

Get-ADReplicationFailure -Target dc01

Wenn der Fehler noch nicht ganz auf einen Domänencontroller eingegrenzt ist, können Sie auch die Gesamtstruktur und damit alle Domänencontroller der Umgebung einschließen:

Get-ADReplicationFailure -Target "joos.int" -Scope Forest

Anzeigen aller Replikationsfehler in einer Active Directory-Umgebung

Anzeigen aller Replikationsfehler in einer Active Directory-Umgebung

So erkennen Sie schnell, ob sich die Replikationsfehler der Umgebung auf einzelne Domänencontroller konzentrieren und können sich an die Fehlerbehebung machen. Hier sehen Sie auch, wenn einzelne Domänencontroller keine Verbindung ermöglichen. In diesem Fall überprüfen Sie, von welchem DC der Fehler verursacht wird. Sie können dazu auch einzelne Objekte mit dem Cmdlet "Sync-ADObject" replizieren lassen, um zu testen, zwischen welchen Domänencontrollern es zu Problemen kommt.

 

Netzwerkverbindungen zwischen Servern testen

In der PowerShell können Sie auch Netzwerkverbindungen zwischen Computern testen und überprüfen, ob bestimmte Ports offen sind und eine Kommunikation zwischen Ziel- und Quell-Server ermöglichen. Wollen Sie vom DC01 zum Beispiel die Verbindung zu DC02 testen, geben Sie auf DC01 zunächst in der PowerShell den folgenden Befehl ein:

Test-NetConnection dc02

Funktioniert die Verbindung generell, können Sie auch die Verbindung zu einzelnen Ports testen. Dazu verwenden Sie den Parameter "-Port". Die wichtigsten Ports, die Sie an dieser Stelle zwischen zwei Domänencontrollern testen können ist:


LDAP: 389 (TCP, UDP)
LDAP: (SSL) 686 (TCP)
Globaler Katalog: 3268 (TCP)
Globaler Katalog (SSL): 3269 (TCP)

Überprüfen von Netzwerkverbindungen zwischen Domänencontrollern in der PowerShell

Überprüfen von Netzwerkverbindungen zwischen Domänencontrollern in der PowerShell

Wichtig ist in diesem Zusammenhang auch der Secure-Channel zwischen Domänencontrollern und Domäne. Dieser ist auf Mitgliedsservern genauso wichtig wie auf Domänencontrollern. Auch hier können Sie in der PowerShell einen Server testen und danach gegebenenfalls die Verbindung reparieren. Mit dem Parameter "-verbose" erhalten Sie mehr Informationen, wenn Fehler vorliegen:

Test-ComputerSecureChannel -Server dc01 -verbose

Eine Reparatur des Kanals können Sie mit dem Cmdlet "Test-ComputerSecureChannel -Repair" testen. Für das Testen der Netzwerkverbindungen kann es teilweise auch notwendig sein, in der PowerShell die aktuelle, externe IP-Adresse des Standardgateways als Variable zu speichern. Den Inhalt der Variablen verwenden Sie anschließend in einem Skript oder können sich den Inhalt auch einfach durch Eingabe der Variablen anzeigen lassen, in diesem Beispiel "$ip":


$ip = Invoke-RestMethod http://ipinfo.io/json | Select -exp ip
$ip

Anzeigen der externen IP-Adresse des Standardgateways in der PowerShell

Anzeigen der externen IP-Adresse des Standardgateways in der PowerShell

 

DNS und die PowerShell

In der PowerShell können Sie sich auch den DNS-Cache eines Computers anzeigen lassen und diesen auch löschen. Das ist besonders dann sinnvoll, wenn Sie zur Fehlerbehebung Anpassungen an den DNS-Optionen vorgenommen haben und danach den Cache löschen wollen:


Get-DNSClientServerAddress

Clear-DnsClientCache

Die komplette Netzwerkkonfiguration können Sie in der PowerShell mit "Get-NetIPConfiguration" auslesen. Bezüglich DNS-Server ist in diesem Bereich auch das Auslesen der DNS-Zonen wichtig. Auch das können Sie in der PowerShell erledigen, zum Beispiel mit:

Get-DnsServerZone -ComputerName dc01

 

Fazit

Die PowerShell ist ein mächtiges Werkzeug, wenn es darum geht Fehler in Active Directory zu finden und auch zu beheben. Die Befehle sind in den meisten Fällen nicht kompliziert und liefern alle notwendigen Informationen, die für ein Troubleshooting notwendig sind. Es loht sich für Admins, sich mit den wichtigsten Befehlen auseinanderzusetzen. Die Cmdlets eignen sich auch optimal für eine schnelle Diagnose und einen ersten Überblick zu den Einstellungen und der Struktur einer Active Directory-Umgebung.

 

 


 

Weiterführende Links

 

Zusammenhängende Posts

Über den Autor: