Get-AdUser: Wie man Active Directory-Benutzer mit PowerShell überprüft

PowerShell ist ein unverzichtbares Werkzeug für IT-Administratoren und erleichtert die Überprüfung von Active Directory Benutzerkonten mit dem Befehl Get-AdUser. In diesem Leitfaden werden wir ausführlich erläutern, wie man mit dem beliebten Active Directory-Cmdlet beginnt. 

Einführung in das Get-AdUser PowerShell-Cmdlet

Das Get-AdUser Cmdlet ist eines der beliebtesten Active Directory PowerShell-Cmdlets. Es ermöglicht das Abrufen eines bestimmten Benutzerobjekts oder die Durchführung anpassbarer Suchvorgänge, um mehrere Benutzerobjekte zu erhalten.

Werbung

Der Identity Parameter wird verwendet, um anzugeben, welchen Active Directory Benutzer man abrufen möchte. Es gibt mehrere Möglichkeiten, den Benutzer zu identifizieren:

  • Man kann deren distinguished Name (DN), GUID, Sicherheitskennung (SID) oder Sicherheitskontoname (SAM) verwenden.
  • Man kann auch den Parameter auf eine Benutzerobjektvariable wie z. B. $UserA setzen oder ein Benutzerobjekt über die Pipeline an den Identity Parameter übergeben.

Man kann die Filter oder LDAPFilter Parameter verwenden, um nach mehreren Benutzern zu suchen und diese abzurufen. Der Filter Parameter verwendet die PowerShell Expression Language (PSL) zum Abfragen von Active Directory.

Die PowerShell Expression Language-Syntax bietet Administratoren umfangreiche Typkonvertierungsunterstützung für Werttypen, die vom Filter-Parameter akzeptiert werden. Wenn Sie bereits Lightweight Directory Access Protocol (LDAP)-Abfragezeichenfolgen haben, verwenden Sie stattdessen den LDAPFilter-Parameter.

Wenn keine Parameter explizit festgelegt sind, zeigt Get-AdUser einen Standard Satz von Benutzerobjekteigenschaften an. Um zusätzliche Eigenschaften abzurufen, verwenden Sie den Properties-Parameter. Später in diesem Artikel werden wir auf einige der Parameter eingehen, die Sie verwenden können.

Werbung

So verwenden Sie Get-AdUser und Voraussetzungen

Bevor Sie Get-AdUser und andere mit Active Directory zusammenhängende PowerShell-Befehle verwenden können, müssen Sie sicherstellen, dass das Active Directory-Modul auf Ihrem Arbeitsplatz installiert und geladen ist. Abhängig von der Windows-Version, die Sie verwenden, gibt es unterschiedliche Methoden, die Sie befolgen können, um das Cmdlet zu installieren.

Um der Kürze willen werde ich die beiden häufigsten Methoden durchgehen, die Sie als Administrator oder IT-Profi wahrscheinlich durchlaufen, wenn Sie Ihr lokales Active Directory verwalten.

Erstens können Sie den folgenden PowerShell-Befehl verwenden, um das Remote Server Administration Tools (RSAT)-Tool direkt über Windows Update zu installieren.

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

Die zweite Methode besteht darin, die Einstellungen-App zu verwenden, um das RSAT-Tool direkt zu installieren. Klicken Sie auf Start -> Einstellungen -> Apps -> Optionale Features -> Feature hinzufügen -> und setzen Sie ein Häkchen bei der Option „RSAT: Active Directory Domänendienste und Lightweight Directory Services Tools“.

Werbung

Klicken Sie auf die Schaltfläche Installieren.

Wie man ein AD-Benutzerkonto anhand des -Identity-Parameters findet

Gut, lassen Sie uns beginnen, das Cmdlet zu verwenden und Ihnen zeigen, wie ich Ihnen helfen kann, effizienter (und schneller!) die benötigten Informationen zu erhalten. Ich arbeite in meiner (Windows Server 2022 Active Directory) Hyper-V-Lab-Umgebung und bin in eine Windows 10 21H1-Client-Virtual Machine (VM) eingeloggt. Ich habe im Startmenü nach ‚Active Directory-Modul für Windows PowerShell‘ gesucht und es als ‚Administrator ausführen‘ geöffnet.

Active Directory Module for Windows PowerShell

Zuerst lassen Sie mich einen Domänenbenutzer basierend auf dem sAMAccountName-Attribut finden.

Get-ADUser breinders
Finding a user account via their sAMAccountName

Da sind Sie. Wir können nun das objectGUID (oder GUID)-Attribut verwenden, um einen Benutzer zu finden. Lassen Sie uns versuchen:

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

Ah, dasselbe Benutzerkonto. Ausgezeichnet. Wir können auch nach einem Benutzer anhand seiner Sicherheitskennung oder SID suchen.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

Ja, etwas wiederholend, aber Sie verstehen den Punkt. Sie können auch den Nachnamen, den Vornamen, den Benutzerprincipalnamen und andere verwenden.

Verwendung des Get-AdUser-Filters

In größeren Umgebungen würde ich nicht empfehlen, einfach ‚Get-AdUser‘ einzugeben, da es beginnen wird, ALLE Benutzerobjekte in Ihrer angehängten AD-Domäne abzurufen. Dies würde nicht nur Ihre Konsole mit Daten überfluten, sondern auch eine spürbare Belastung für den Domänencontroller darstellen, den Ihr Arbeitsplatz verwendet.

Wenn wir nur die gesamte Benutzerbasis herausfiltern und nach bestimmten Benutzern anhand einiger Eigenschaften suchen könnten. Nun, genau dafür ist der Parameter „-filter“ da!

Der Parameter „-filter“ gibt einen Abfragestring an, der AD-Objekte abruft. Dieser String verwendet die PowerShell-Ausdruckssprache (PEL) Syntax. Die PEL-Syntax bietet umfangreiche Typkonvertierungsunterstützung für die Wertetypen, die vom Filter-Parameter erhalten werden. Die Syntax verwendet eine In-Order-Darstellung, was bedeutet, dass der Operator zwischen dem Operanden und dem Wert platziert wird. Lassen Sie uns einige Beispiele durchgehen, um Ihnen eine bessere Vorstellung zu geben.

Zuerst, lassen Sie uns alle Konten entdecken, die ‚Aktiviert‘ sind.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

Wir verwenden diese schöne PEL-Syntax, um alle Konten zu finden, bei denen das Feld „Enabled“ True entspricht. Wir leiten auch die Ausgabe weiter und verwenden das Format-Table PowerShell-Cmdlet für ein leichter lesbare Anzeigeformat.

Als nächstes zeigen wir alle Benutzer mit einer E-Mail-Adresse an.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

Zunächst fällt auf, dass wir den Parameter „-filter“ verwenden, um nur Benutzerkonten einzuschließen, die keine „null“ E-Mail-Adresse haben. Oder, einfacher ausgedrückt, alle Konten mit einer E-Mail-Adresse. Ich weiß, manchmal ist es schwierig, wie ein Computer zu denken.

Zweitens konzentrieren wir uns auf die drei Eigenschaften Name, GivenName und mail (E-Mail-Adresse). Wir verwenden Format-Table und listen diese Eigenschaften auf. Ein Kinderspiel!

Sie möchten möglicherweise auch Ihre Konten aus Sicherheitssicht überprüfen. Sie können auch den Parameter „-filter“ verwenden, um alle Konten mit dem Attribut „passwordneverexpires“ zu finden. Das wird im Allgemeinen nicht empfohlen.

Get-AdUser where name like?

Eine weitere coole Funktion ist die Verwendung verschiedener Parameter mit -filter, um nur spezifische Benutzer zu finden, die den verschiedenen Eigenschaften eines AD-Benutzerobjekts entsprechen. Obwohl meine Laborumgebung äußerst klein ist und nur etwa zehn Benutzerkonten hat, kann sie dennoch die Leistungsfähigkeit und Flexibilität zeigen, schnell die gesuchten Konten zu finden. Hier finden wir alle Benutzer mit ‚Reinders‘ in ihren Namen.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Wir verwenden den Parameter ‚Name‘ und suchen nach allen Konten, die ‚Reinders‘ irgendwo im Namen haben. Es könnte ihr Vorname, Nachname oder sogar ein zweiter Vorname sein, wenn er eingegeben wurde. Wenn Sie NUR Benutzer mit Reinders als Nachnamen finden möchten, ändern Sie das -like-Feld in „*Reinders“. (Beachten Sie, dass am Ende des Feldes kein Sternchen (*) steht).

Begrenzung des Suchbereichs von Get-AdUser nach Organisationseinheit

Wenn Sie eine relativ große Domäne/Unternehmen haben, können längere Abfragezeiten auftreten, wenn Sie diese Befehle ausführen, oder unnötige Leistungseinbußen für Ihre Domänencontroller. Lassen Sie uns über die Begrenzung des Umfangs dieser Suchen auf eine bestimmte Organisationseinheit (OU) sprechen.

Wir können den Parameter ‚-SearchBase‘ verwenden und eine OU (oder mehrere OUs) mit der folgenden Syntax angeben.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

Hier begrenzen wir unseren Umfang auf alle Benutzer in der OU „Test Users“ und geben dann ihren Namen und ihre E-Mail-Adresse in Tabellenform aus.

Verwendung von Get-AdUser mit alternativen Anmeldeinformationen

Standardmäßig wird das Get-AdUser-Cmdlet im Kontext des aktuell angemeldeten Benutzers ausgeführt. Wenn Sie den Befehl mit alternativen Anmeldeinformationen ausführen möchten, können Sie eine Variable verwenden, die alternativen Anmeldeinformationen in dieser Variable speichern und den Befehl dann mit dem Schalter ‚-Credential‘ ausführen.

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Wieder schön und unkompliziert!

Arbeiten mit dem Parameter Get-AdUser-Eigenschaften

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

Der Parameter „-Properties“ gibt die Eigenschaften des Ausgabeobjekts an, die vom Server abgerufen werden sollen. Standardmäßig werden zehn Eigenschaften zurückgegeben und angezeigt, wenn Sie ihn nicht verwenden. Dinge wie DistinguishedName, ob das Konto „Aktiviert“ oder „Deaktiviert“ ist, der GivenName des Benutzers, Name, GUID und andere systemähnliche Attribute. Es gibt jedoch einige verfügbare. Verwenden Sie diesen Parameter, um Eigenschaften abzurufen, die nicht im Standardset enthalten sind.

Geben Sie Eigenschaften für diesen Parameter als kommagetrennte Liste von Namen an. Um alle Attribute anzuzeigen, die auf dem Objekt festgelegt sind, geben Sie * (Sternchen) an.

Um auf diese anderen Eigenschaften zuzugreifen, geben Sie sie einfach an; verwenden Sie den Namen der Eigenschaft. Für Eigenschaften, die nicht Standard- oder erweiterte Eigenschaften sind, müssen Sie den Anzeigenamen des Attributs im Lightweight Directory Access Protocol (LDAP) angeben.

Kommen wir zu einigen Beispielen.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

Das obige Beispiel zeigt alle Benutzer in der Domäne mit ihrem Namen und dem Datum/Uhrzeit, wann ihr Passwort zuletzt festgelegt/zurückgesetzt wurde.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

Dies zeigt, wann das Konto im Active Directory erstellt wurde. Lassen Sie uns das mit einer Abfrage abschließen, um Name, Abteilung und Manager für jedes Konto abzurufen.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

Ein letztes Beispiel und eine großartige Verwendung des Export-Csv-Befehls. Wenn Sie eine Liste aller Benutzer in einer Domäne und alle Eigenschaften benötigen, führen Sie diesen Befehl aus, um alles in eine praktische CSV-Datei zu exportieren.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

Zusammenfassung

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

Oft ist es erstaunlich einfach, sich viele Anwendungsfälle vorzustellen, in denen Sie diesen Befehl nutzen können, um ein Problem zu lösen, einige Dokumentationen für andere Ingenieure zu erstellen und insgesamt bei der Fehlersuche zu helfen. Es kann sehr nützlich sein. Und natürlich steigert die Verwendung einiger dieser Befehle zur Generierung eines PowerShell-Skripts immer die Effizienz!

Fühlen Sie sich frei, Fragen oder Kommentare unten zu hinterlassen.

Verwandter Artikel:

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/