In der heutigen IT-Landschaft ist das Active Directory (AD) das Herzstück der meisten Unternehmensinfrastrukturen. Es verwaltet Benutzer, Computer, Gruppen und andere Ressourcen und ist somit entscheidend für Sicherheit und Effizienz. Als Systemadministrator oder IT-Professional verbringen Sie wahrscheinlich einen Großteil Ihrer Zeit damit, Informationen aus dem AD abzurufen oder zu ändern. Genau hier kommt PowerShell ins Spiel – das leistungsstarke Skripting-Werkzeug von Microsoft, das die Verwaltung von AD-Umgebungen revolutioniert hat.
Eines der am häufigsten verwendeten Cmdlets für die Interaktion mit dem Active Directory ist Get-ADUser
. Es ist Ihr Go-to-Befehl, um Informationen über Benutzerkonten abzurufen. Doch um seine volle Kraft zu entfalten, müssen Sie die wichtigsten Parameter verstehen und effektiv einsetzen. Dieser Artikel führt Sie detailliert durch die entscheidenden Parameter von Get-ADUser
, erklärt deren Funktion und zeigt Ihnen praktische Anwendungsbeispiele, damit Sie Ihre Active Directory-Verwaltung auf das nächste Level heben können.
Voraussetzungen: Bereit für den Start
Bevor wir in die Tiefen von Get-ADUser
eintauchen, stellen Sie sicher, dass Sie die notwendigen Voraussetzungen erfüllen:
- Active Directory PowerShell-Modul: Dieses Modul ist Teil der Remote Server Administration Tools (RSAT) für Windows 10/11 oder der Server Manager-Features auf Windows Servern. Installieren Sie es, falls noch nicht geschehen, mit dem Befehl
Install-WindowsFeature -Name RSAT-AD-PowerShell
auf Servern oder über die Windows-Features auf Clients. - Berechtigungen: Sie benötigen entsprechende Leseberechtigungen im Active Directory, um Benutzerinformationen abrufen zu können. In den meisten Fällen reichen normale Domänenbenutzerberechtigungen aus, aber für erweiterte Eigenschaften oder bestimmte Operationen sind möglicherweise höhere Berechtigungen erforderlich.
Grundlagen von Get-ADUser: Das Benutzerobjekt verstehen
Der einfachste Aufruf von Get-ADUser
sieht so aus:
Get-ADUser -Filter *
Dieser Befehl ruft alle Benutzerobjekte in Ihrer Domäne ab. Standardmäßig gibt Get-ADUser
nur eine begrenzte Anzahl von Eigenschaften zurück, wie DistinguishedName
, Enabled
, GivenName
, Name
, ObjectClass
, ObjectGUID
, SamAccountName
und Surname
. Jedes zurückgegebene Element ist ein ADUser-Objekt, dessen Eigenschaften Sie weiter verarbeiten können.
Die wichtigsten Parameter im Detail erklärt
1. -Filter: Die Macht der gezielten Suche
Der Parameter -Filter
ist zweifellos einer der mächtigsten und am häufigsten verwendeten Parameter von Get-ADUser
. Er ermöglicht es Ihnen, Suchabfragen direkt an den Domänencontroller zu senden, was die Performance erheblich verbessert, da die Filterung auf dem Server und nicht erst nach der Übertragung der Daten erfolgt. Sie verwenden hier die OPATH-Syntax, die SQL-ähnlich ist.
Syntax: -Filter {<Eigenschaft> -<Operator> '<Wert>'}
Beispiele:
- Alle Benutzer finden, deren Nachname „Mustermann” ist:
Get-ADUser -Filter {Surname -eq 'Mustermann'}
- Alle Benutzer finden, die seit dem 01.01.2023 nicht mehr aktiv waren (
LastLogonTimestamp
ist eine Integer-Repräsentation, muss umgerechnet werden, oder man nutzt ein benutzerfreundlicheres Attribut wieLastLogonDate
mit-Properties
):Get-ADUser -Filter {Enabled -eq $true -and LastLogonDate -lt (Get-Date).AddDays(-90)} -Properties LastLogonDate
(Hinweis:
LastLogonDate
wird nur mit-Properties
zurückgegeben und ist leichter zu lesen.) - Benutzer finden, deren Vorname mit „Max” beginnt und die in der IT-Abteilung sind:
Get-ADUser -Filter {GivenName -like 'Max*' -and Department -eq 'IT'} -Properties Department
2. -Identity: Der direkte Treffer
Wenn Sie einen bestimmten Benutzer identifizieren möchten und dessen eindeutigen Bezeichner kennen, ist -Identity
die schnellste Methode. Dieser Parameter akzeptiert verschiedene Arten von Identitäten:
- SAMAccountName: Der Windows 2000-kompatible Anmeldename (z.B.
mmustermann
). - DistinguishedName (DN): Der vollständige Pfad zum Benutzerobjekt im AD (z.B.
CN=Max Mustermann,OU=Benutzer,DC=contoso,DC=com
). - GUID: Die eindeutige globale ID des Objekts.
- SID: Die Sicherheits-ID des Benutzers.
Beispiele:
- Benutzer nach SAMAccountName suchen:
Get-ADUser -Identity 'mmustermann'
- Benutzer nach DistinguishedName suchen:
Get-ADUser -Identity 'CN=Max Mustermann,OU=Vertrieb,DC=ihredomain,DC=local'
3. -Properties: Mehr als nur die Standard-Infos
Wie bereits erwähnt, gibt Get-ADUser
standardmäßig nur eine Teilmenge der verfügbaren Benutzereigenschaften zurück. Um zusätzliche Attribute wie EmailAddress
, Office
, Manager
, Description
, Enabled
, PasswordLastSet
oder LastLogonDate
abzurufen, müssen Sie den Parameter -Properties
verwenden.
Wichtig: Fordern Sie nur die Eigenschaften an, die Sie wirklich benötigen, um die Netzwerklast und die Verarbeitungszeit zu minimieren, besonders bei vielen Benutzern.
Beispiele:
- E-Mail-Adresse und Büro eines Benutzers abrufen:
Get-ADUser -Identity 'mmustermann' -Properties EmailAddress,Office
- Alle Eigenschaften eines Benutzers abrufen (nur für Debugging oder spezifische Exporte verwenden):
Get-ADUser -Identity 'mmustermann' -Properties *
4. -SearchBase: Den Suchbereich eingrenzen
Der Parameter -SearchBase
ist entscheidend, um die Suche auf eine bestimmte Organisationseinheit (OU) oder einen Container zu beschränken. Dies verbessert die Effizienz enorm und ist besonders nützlich in großen AD-Umgebungen, da der Domänencontroller nicht die gesamte Domäne durchsuchen muss. Geben Sie den DistinguishedName der OU als Wert an.
Beispiele:
- Alle Benutzer in der OU „Vertrieb” suchen:
Get-ADUser -Filter * -SearchBase 'OU=Vertrieb,DC=ihredomain,DC=local'
- Einen spezifischen Benutzer in einer bestimmten OU suchen:
Get-ADUser -Identity 'mmustermann' -SearchBase 'OU=Vertrieb,DC=ihredomain,DC=local'
5. -SearchScope: Die Suchtiefe festlegen
In Verbindung mit -SearchBase
bestimmt der Parameter -SearchScope
, wie tief in der Hierarchie gesucht werden soll:
- Base: Nur das Objekt der
-SearchBase
selbst wird durchsucht (selten für Benutzerobjekte). - OneLevel: Nur die direkten Kindobjekte der
-SearchBase
werden durchsucht. - Subtree (Standard): Alle Kindobjekte und deren Unterstrukturen innerhalb der
-SearchBase
werden durchsucht. Dies ist der Standardwert, wenn-SearchBase
verwendet wird.
Beispiel:
- Nur Benutzer direkt in der OU „Vertrieb” (nicht in Unter-OUs des Vertriebs) suchen:
Get-ADUser -Filter * -SearchBase 'OU=Vertrieb,DC=ihredomain,DC=local' -SearchScope OneLevel
6. -Server: Den Domänencontroller ansprechen
Standardmäßig fragt PowerShell den nächstgelegenen verfügbaren Domänencontroller ab. Mit dem Parameter -Server
können Sie jedoch gezielt einen bestimmten Domänencontroller ansprechen. Dies ist nützlich für Debugging-Zwecke, wenn Sie Replikationsprobleme vermuten, oder um Abfragen an einen spezifischen DC zu leiten, der weniger ausgelastet ist.
Beispiel:
- Benutzerinformationen von einem spezifischen Domänencontroller abrufen:
Get-ADUser -Identity 'mmustermann' -Server 'DC01.ihredomain.local'
7. -Credential: Mit anderen Anmeldeinformationen arbeiten
Manchmal müssen Sie Get-ADUser
mit Anmeldeinformationen ausführen, die sich von Ihrem aktuell angemeldeten Benutzer unterscheiden (z.B. mit einem Dienstkonto oder einem Benutzer mit höheren Berechtigungen). Der Parameter -Credential
ermöglicht Ihnen genau das.
Beispiel:
- Abfrage mit expliziten Anmeldeinformationen:
$cred = Get-Credential Get-ADUser -Filter * -Credential $cred
Es öffnet sich ein Fenster, in dem Sie Benutzername und Passwort eingeben können.
8. -AuthType: Die Authentifizierungsmethode wählen
Der Parameter -AuthType
erlaubt es Ihnen, die für die Verbindung zum Domänencontroller verwendete Authentifizierungsmethode festzulegen. Dies ist in den meisten Umgebungen selten nötig, kann aber in speziellen Szenarien oder bei der Fehlerbehebung nützlich sein. Verfügbare Typen sind Negotiate
(Standard), Kerberos
, Basic
, Digest
und NTLM
.
Beispiel:
- Eine Abfrage explizit mit Kerberos-Authentifizierung durchführen:
Get-ADUser -Identity 'mmustermann' -AuthType Kerberos
Nützliche Anwendungsfälle und Kombinationen
Die wahre Stärke von Get-ADUser
liegt in der Kombination seiner Parameter und der Pipe-Funktionalität von PowerShell, um komplexe Verwaltungsaufgaben zu lösen.
Deaktivierte Benutzer finden:
Get-ADUser -Filter {Enabled -eq $false} -Properties LastLogonDate | Select-Object Name,SamAccountName,LastLogonDate
Benutzer ohne E-Mail-Adresse finden:
Get-ADUser -Filter {EmailAddress -notLike '*'} -Properties EmailAddress | Select-Object Name,SamAccountName
Benutzer exportieren, die in den letzten 90 Tagen ihr Passwort nicht geändert haben:
Get-ADUser -Filter {Enabled -eq $true -and PasswordLastSet -lt (Get-Date).AddDays(-90)} -Properties PasswordLastSet |
Select-Object Name,SamAccountName,PasswordLastSet |
Export-Csv -Path "C:tempuser_passwort_alt.csv" -NoTypeInformation -Encoding UTF8
Alle Benutzer einer Gruppe finden:
Get-ADGroupMember -Identity 'Administratoren' -Recursive | Get-ADUser -Properties EmailAddress | Select-Object Name,SamAccountName,EmailAddress
Tipps für Performance und Best Practices
- Filter frühzeitig anwenden: Nutzen Sie immer
-Filter
oder-Identity
, um die Anzahl der vom Domänencontroller abgerufenen Objekte zu minimieren. Das Filtern auf dem Server ist wesentlich effizienter als das Abrufen aller Objekte und anschließende Filtern mitWhere-Object
auf Ihrem Client. - Eigenschaften gezielt anfordern: Verwenden Sie
-Properties
nur für die Attribute, die Sie wirklich benötigen. Das Abrufen aller Eigenschaften (-Properties *
) ist ressourcenintensiv und sollte nur sparsam eingesetzt werden. - Suchbereich eingrenzen: Wenn Sie wissen, in welcher OU sich ein Benutzer oder eine Gruppe von Benutzern befindet, nutzen Sie
-SearchBase
, um den Suchbereich einzugrenzen. - Fehlerbehandlung: Integrieren Sie
try-catch
-Blöcke in Ihre Skripte, um auf mögliche Fehler zu reagieren, z.B. wenn ein Benutzer nicht gefunden wird. - Dokumentation: Verwenden Sie
Get-Help Get-ADUser -Full
oderGet-Help Get-ADUser -Online
, um immer die aktuellste und vollständigste Dokumentation zu diesem Cmdlet zu erhalten.
Fazit
Der Befehl Get-ADUser
ist ein Eckpfeiler der modernen Active Directory Verwaltung mit PowerShell. Mit einem tiefen Verständnis seiner Schlüsselparameter – insbesondere -Filter
, -Identity
, -Properties
, -SearchBase
und -SearchScope
– können Sie extrem effiziente und zielgerichtete Abfragen durchführen. Dies spart nicht nur Zeit, sondern verbessert auch die Performance Ihrer Skripte und die Stabilität Ihrer AD-Umgebung.
Nehmen Sie sich die Zeit, diese Parameter zu üben und in Ihren täglichen Aufgaben zu integrieren. Die Beherrschung von Get-ADUser
ist ein unverzichtbarer Skill für jeden Systemadministrator, der seine Active Directory-Umgebung effektiv und souverän verwalten möchte. Die Möglichkeiten sind nahezu unbegrenzt – es liegt an Ihnen, sie zu entdecken und zu nutzen!