Der Praxis-Guide für Admins
Mit dem Modul ActiveDirectory
in PowerShell steht Administratoren ein mächtiges Werkzeug zur Verfügung, um Active-Directory-Objekte wie Benutzer, Gruppen, Computer, Organisationseinheiten (OUs) und Gruppenrichtlinien schnell, skriptgesteuert und zuverlässig zu verwalten.
Dieser Beitrag gibt Ihnen einen erweiterten Überblick über die wichtigsten Cmdlets, den produktiven Einsatz in der Domäne und bewährte Best Practices.
✅ Voraussetzungen
- Windows Server mit Active Directory-Rolle oder ein Windows-Client mit den RSAT-Tools.
- PowerShell-Version ≥ 5.1 (oder Windows PowerShell 7+ mit
Import-Module
). - Import des Moduls (meist automatisch verfügbar auf AD-Servern):
Import-Module ActiveDirectory
🧩 Modulüberblick und Hilfe anzeigen
Get-Module -ListAvailable ActiveDirectory
Get-Command -Module ActiveDirectory
Get-Help Get-ADUser -Detailed # Beispiel um die Funktionsweise vom Command "Get-ADUser" zu verstehen
👨💼 Top 10 Cmdlets für Domänen-Administratoren
1. Benutzer suchen
Get-ADUser -Filter * -SearchBase "OU=Benutzer,DC=testdomain,DC=local"
Get-ADUser -Filter * -SearchBase "OU=Benutzer,DC=testdomain,DC=local" | ft
Die Ausgabe der Benutzer sieht wie nachfolgend aus und kann zur Übersicht noch formatiert und angepasst werden.
DistinguishedName : CN=Nachname\, Vorname,OU=Benutzer, DC=testdomain,DC=local
Enabled : True
GivenName : Vorname
Name : Nachname, Vorname
ObjectClass : user
ObjectGUID : eb3867da-5c0b-4633-b19e-e366700d1032
SamAccountName : Anmeldename
SID : S-1-5-21-2875105853-2476587791-2145578461-4692
Surname :
UserPrincipalName : testuser@testdomain.local
1. Benutzer mit bestimmten Attributen finden
Get-ADUser -Filter {Enabled -eq $true -and Department -eq "IT"} -Properties Department
3. Neuen Benutzer erstellen
New-ADUser -Name "Max Mustermann" `
-GivenName "Max" `
-Surname "Mustermann" `
-SamAccountName "mmustermann" `
-UserPrincipalName "mmustermann@firma.local" `
-Path "OU=Benutzer,DC=firma,DC=local" `
-AccountPassword (ConvertTo-SecureString "Passw0rd!" -AsPlainText -Force) `
-Enabled $true
4. Passwort zurücksetzen
Set-ADAccountPassword -Identity mmustermann -NewPassword (ConvertTo-SecureString "NeuesPass123!" -AsPlainText -Force) -Reset
Unlock-ADAccount -Identity mmustermann
5. Benutzer zu einer Gruppe hinzufügen
Add-ADGroupMember -Identity "IT-Admins" -Members mmustermann
6. Benutzer aus Gruppe entfernen
Remove-ADGroupMember -Identity "IT-Admins" -Members mmustermann -Confirm:$false
7. Gruppenmitglieder anzeigen
Get-ADComputer -Filter * -SearchBase "OU=Clients,DC=firma,DC=local"
8. Computerobjekte finden
Get-ADComputer -Filter * -SearchBase "OU=Clients,DC=firma,DC=local"
9. Letztes Anmeldedatum von Benutzern abfragen
Get-ADUser -Filter * -Properties LastLogonDate | Select Name, LastLogonDate
Nachfolgend zwei Beispiele mit Ausgabe:
Get-ADUser testuser -Properties LastLogonDate | FT -Property Name, LastLogonDate -A
Name LastLogonDate
---- -------------
testuser 11.03.2025 09:11:49
Get-ADUser testuser -Properties LastLogonDate
DistinguishedName : CN=testuser,OU=Test,OU=Benutzer,OU=domainOU,DC=testdomain,DC=de
Enabled : True
GivenName : testuser
LastLogonDate : 11.03.2025 09:11:49
Name : testuser
ObjectClass : user
ObjectGUID : adffdd6e-02a3-4651-8606-1a7ad1923cfe
SamAccountName : testuser
SID : S-1-5-21-2875105854-2476583791-2145578461-1438
Surname : test
UserPrincipalName : testuser@testdomain.de
10. Gruppen verschachtelt anzeigen (rekursiv)
Get-ADGroupMember -Identity "Domain Admins" -Recursive
Alternativen – Active Directory Service Interface oder auch adsi
Zwei Beispiele um einen User mittels adsi zu finden.
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = [ADSI]"LDAP://RootDSE" # Die root Domain
$searcher.Filter = "(&(objectCategory=User)(samAccountName=USERNAME))" # Userobjecte werden gesucht mit dem bestimmten anmeldenamen
$result = $searcher.FindOne() # FindAll()
Das Ganze kann man auch als simple Funktion aufbauen und so direkt nach dem User suchen.
function Get-ADUser {
param([string]$UserName)
return (New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$UserName))")).FindOne()
}
Die Filter lassen sich dabei individuell auf das gewünschte ad Objekt anpassen. Bei diesem Cheatsheet könnt ihr euch einen Überblick verschaffen. Oder ihr schaut im AD nach z.B. mit dem ADSI-Editor oder in der Konsole/Snap-In „Active Directory-Benutzer und -Computer“ (dsa.msc). Dazu einfach die erweiterte Ansicht anschalten und in die Eigenschaften der jeweiligen Objekte auf „Attribut-Editor“ gehen.
🧠 Best Practices für den produktiven Einsatz
Um das ActiveDirectory-Modul effizient und sicher zu nutzen, empfehlen sich folgende Vorgehensweisen:
- Sichere Passwortverwaltung: Verwende Secure Strings für Passwörter – auch in Skripten.
- Effiziente Filterung: Setze den
-Filter {}
Parameter ein, anstattWhere-Object
zu nutzen, um die Performance zu optimieren. - Reporting: Generiere regelmäßige Berichte und exportiere Daten mit
Export-Csv
: - Testen mit -WhatIf: Führe neue Skripte zunächst mit
-WhatIf
oder-Confirm:$false
aus, um unbeabsichtigte Änderungen zu vermeiden. - Überwachung inaktiver Konten: Analysiere
LastLogonDate
Werte, um inaktive Benutzerkonten zu identifizieren und zu verwalten.
📚 Weitere Ressourcen
Vertiefende Informationen und aktuelle Entwicklungen findest du in diesen Quellen:
- Microsoft Learn – ActiveDirectory Cmdlets
- Active Directory Administration Overview
- PowerShell Documentation
🏁 Fazit
Das ActiveDirectory-Modul in PowerShell ist ein unverzichtbares Tool für die Verwaltung komplexer Domänenumgebungen. Mit den vorgestellten Cmdlets, erweiterten Anwendungsfällen und Best Practices kannst du administrative Aufgaben automatisieren, detaillierte Reports erstellen und schnell auf Veränderungen reagieren. Richtig eingesetzt verbessert es die Effizienz und Sicherheit deiner IT-Infrastruktur erheblich.
Dies ist der Auftakt zu einer fortlaufenden Serie, in der wir noch tiefer in fortgeschrittene Techniken, praxisnahe Skripte und optimierte Abläufe in Windows-Domänenumgebungen eintauchen. Hast du Fragen oder möchtest du deine eigenen Erfahrungen teilen? Dann diskutiere gern in den Kommentaren mit!