A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using the PowerShell Get-ADGroupMember
cmdlet and other cmdlets can save you a ton of time.
Active Directory-Gruppen sind eine großartige Möglichkeit, Benutzerkonten zu segmentieren. Gruppen ermöglichen es Administratoren, den Zugriff auf Ressourcen über viele Systeme hinweg zu definieren.
In diesem Artikel verwenden wir PowerShell, um AD-Gruppenmitglieder abzurufen und AD-Gruppenmitglieder zu exportieren. Sie können diese Informationen dann verwenden, um eine Vielzahl interessanter Berichte zu generieren.

Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Laden Sie die kostenlose Testversion herunter!
Voraussetzungen
Wenn Sie diesem Artikel folgen möchten, stellen Sie bitte sicher, dass Sie die folgenden Anforderungen erfüllen:
- Arbeiten an einem Windows 10-Computer, der einer Domäne beigetreten ist
- Angemeldet mit einem Benutzer, der AD-Gruppen und Benutzerkonten lesen kann
- Das PowerShell-Active Directory-Modul installiert haben
Die Grundlagen erlernen
Um AD-Gruppen und Gruppenmitglieder abzufragen, stehen Ihnen zwei PowerShell-Cmdlets zur Verfügung – Get-AdGroup
und Get-AdGroupMember
.
Get-ADGroup
fragt einen Domänencontroller ab und gibt AD-Gruppenobjekte zurück. Get-AdGroupMember
schaut in jede Gruppe und gibt alle Benutzerkonten, Gruppen, Kontakte und andere Objekte zurück, die in dieser Gruppe existieren.
AD-Gruppen abrufen
Um AD-Gruppen mit PowerShell zu finden, können Sie das Cmdlet Get-ADGroup
verwenden. Ohne Parameter wird Get-ADGroup
AD abfragen und alle Gruppen in einer Domäne mit dem Parameter Filter
zurückgeben. Der Parameter Filter
ist erforderlich. Er dient dazu, die zurückgegebenen Gruppen anhand verschiedener Kriterien einzuschränken.
Zum Beispiel können Sie mit Get-ADGroup
und einem Jokerzeichen (Stern) für den Parameter Filter
alle Gruppen ohne Berücksichtigung von Kriterien finden. Ein Beispiel finden Sie unten. Das Durchscrollen all dieser Gruppen kann einige Zeit dauern, wenn Sie Hunderte oder sogar Tausende in Ihrer Domäne haben.
Wenn Sie eine einzelne Gruppe finden müssen, können Sie den Parameter Identity
verwenden.
Der Parameter Identity
ist ein gemeinsamer Parameter bei allen Active Directory PowerShell-Cmdlets. Er ermöglicht es Ihnen, Ihre Abfrage auf ein einzelnes AD-Objekt zu beschränken. Wenn Sie zum Beispiel überprüfen müssen, ob eine Gruppe namens HR existiert, können Sie dies mit dem folgenden Befehl herausfinden.
AD-Gruppenmitglieder mit Get-AdGroupMember abrufen
Die Verwendung von PowerShell zur Auflistung der Mitglieder einer AD-Gruppe erfordert das Cmdlet Get-ADGroupMember
. Mit diesem Cmdlet können Benutzer-, Gruppen- und Computerobjekte in einer bestimmten Gruppe abgerufen werden. Möglicherweise müssen Sie alle Mitglieder der Gruppe Administrators finden. In seiner einfachsten Form verwenden Sie einfach den Identity
-Parameter und geben den Namen der Gruppe an, wie unten gezeigt.
Beachten Sie, dass
Get-ADGroupMember
nur Gruppenmitgliedschaften für Benutzer, Gruppen und Computer zurückgibt. Es werden keine anderen AD-Objekte wie Kontakte zurückgegeben.
Auflistung der Gruppenmitglieder in Gruppenmitgliedern
Wie Sie vielleicht wissen, können AD-Gruppen nicht nur Benutzerkonten, sondern auch andere Gruppen enthalten, die als Verschachtelungen bezeichnet werden. Wenn eine Gruppe in einer anderen Gruppe verschachtelt ist, erben die Mitglieder dieser Gruppe die gleichen Berechtigungen wie der übergeordneten Gruppe.
Standardmäßig gibt das PowerShell-Cmdlet Get-ADGroupMember
keine verschachtelten Gruppenmitglieder zurück. Um das zu beheben, können Sie den Parameter Recursive
verwenden. Zum Beispiel könnten Sie die Mitglieder von Gruppen finden, die innerhalb der Gruppe HR verschachtelt sind, indem Sie den Parameter Recursive
wie unten gezeigt verwenden.
Auf einmal mehrere Gruppen/Mitglieder erhalten
Wenn Sie AD für viele verschiedene Gruppen oder Gruppenmitglieder auf einmal abfragen müssen, können Sie dies auch mit einer PowerShell-Schleife foreach tun. Eine foreach-Schleife führt einen Befehl oder Code für jedes Element in einer Sammlung aus. In diesem Fall wird diese Sammlung eine Liste von Gruppennamen sein.
Vielleicht müssen Sie alle Gruppenmitglieder in den Gruppen HR, Buchhaltung und IT finden. Dazu würden Sie zunächst eine Sammlung oder ein Array mit diesen Gruppennamen erstellen. Das folgende Beispiel definiert diese Sammlung als $groupNames
. Dann, für jeden Namen in dieser Sammlung, führen Sie Get-ADGroupMember
aus und geben Sie den Namen jeder Gruppe als Wert für den Parameter Identity
an.
Alternativ könnten Sie das
ForEach-Object
-CMDlet verwenden, um über Gruppen zu iterieren.
Verwendung alternativer Anmeldeinformationen
Wie viele andere PowerShell-CMDlets verfügen auch die AD-Gruppen-CMDlets über einen Credential
-Parameter. Standardmäßig verwenden die AD-Gruppen-CMDlets beim Ausführen Ihre angemeldeten Anmeldeinformationen, um Active Directory abzufragen. Dieses Verhalten erfordert, dass Sie auf einem domänengebundenen Computer angemeldet sind und als Active Directory-Benutzer über entsprechende Berechtigungen verfügen.
Aber was ist, wenn Sie sich auf einem Arbeitsgruppencomputer befinden oder sich als anderer Benutzer bei AD authentifizieren müssen? In diesem Fall können Sie den Credential
-Parameter verwenden. Dieser Parameter ermöglicht es Ihnen, einen Benutzernamen und ein Passwort für die Authentifizierung anzugeben.
Zum Beispiel hat Ihr Benutzerkonto möglicherweise nicht die Berechtigung, eine AD-Aufgabe auszuführen. Sie haben jedoch ein Dienstkonto mit zusätzlichen Rechten. Sie können als Standardbenutzer angemeldet sein, sich aber dennoch mit dem Dienstkonto authentifizieren, wie unten gezeigt.
Das Get-Credential
-Cmdlet fordert einen Benutzernamen und ein Passwort an, um eine Anmeldeinformation zu erstellen. Diese Anmeldeinformation wird dann an das Get-AdGroup
-Cmdlet zur Authentifizierung übergeben.
Der
Credential
-Parameter ist in PowerShell allgegenwärtig, um Authentifizierungsanmeldeinformationen bereitzustellen. Weitere Informationen finden Sie unter Verwendung des PowerShell Get-Credential-Cmdlets und alles rund um Anmeldeinformationen.
Mit Get-ADGroup Gruppenmitglieder abrufen?
Es mag paradox klingen, aber Sie können auch mit dem Get-ADGroup
-Cmdlet Gruppenmitglieder abrufen.
Es stellt sich heraus, dass Get-ADGroup
eine Eigenschaft für jede Gruppe namens members
zurückgibt. Dies ist eine Sammlung von AD-Objekten, die Mitglieder einer Gruppe sind.
Zum Beispiel können Sie, um die Gruppenmitglieder in der HR-Gruppe erneut ohne Verwendung von Get-ADGroupMember
zu finden, Folgendes tun:
Warum diese Methode gegenüber der anderen verwenden? Der Hauptunterschied besteht darin, dass die members
-Eigenschaft alle Arten von AD-Objekten enthält – nicht nur Benutzer, Computer und andere Gruppen.
Vielleicht haben Sie Kontakte in verschiedenen Gruppen. Wenn Sie Get-ADGroupMember
ausführen, werden diese Kontakte nicht angezeigt. Aber wenn Sie Get-ADGroup
sagen, alle Mitglieder in dieser Gruppe zurückzugeben und diese Sammlung wie unten gezeigt zu erweitern, werden Sie die Kontakte sehen.
Suche nach bestimmten AD-Attributen
In dem obigen Grundlagenabschnitt haben Sie einfach alle Gruppen und Gruppenmitglieder zurückgegeben. Die Informationen, die für jede Gruppe und jedes Gruppenmitglied zurückgegeben werden, sind nur ein Teil der mit jedem Objekttyp verbundenen AD-Attribute.
Vielleicht möchten Sie die E-Mail-Adresse eines Benutzerkontos, das letzte Anmeldedatum oder ein anderes zugehöriges AD-Attribut sehen? Dafür müssen Sie kreativ werden.
Vielleicht konnten Sie alle Gruppenmitglieder in der HR-Gruppe finden, aber Sie müssen auch die E-Mail-Adresse jedes Benutzerkontos sehen?
Ergebnisse filtern
Bis zu diesem Punkt haben Sie alle Gruppen und Gruppenmitglieder gefunden, aber in einer Arbeitsumgebung müssen Sie dies selten tun. Wahrscheinlich müssen Sie nur eine begrenzte Anzahl von jedem Element finden. Die AD-Gruppen-Cmdlets bieten einige Möglichkeiten, dies zu handhaben.
Der Filter
-Parameter
Wie bereits erwähnt, verfügen beide Cmdlets über den Filter
-Parameter. Dieser Parameter ermöglicht es Ihnen, das, was in vielerlei Hinsicht außerhalb des Rahmens dieses Artikels zurückgegeben wird, einzuschränken.
Mit dem Filter
-Parameter können Sie die Ergebnisse nach beliebigem AD-Attribut wie Name, Gruppentyp, E-Mail-Adresse, letzte Anmeldung für Benutzer usw. einschränken.
Zum Beispiel möchten Sie möglicherweise nur Sicherheitsgruppen finden. In diesem Fall geben Sie ein GroupCategory
-Attribut an und legen eine Bedingung fest, um sicherzustellen, dass nur Sicherheitsgruppen zurückgegeben werden.
Vielleicht möchten Sie alle Sicherheitsgruppen finden, aber sie dürfen nicht Domänenlokalgruppen sein. Sie fügen dann eine weitere Bedingung hinzu (diesmal unter Verwendung des Operators -ne
), um zu verhindern, dass Domänenlokalgruppen zurückgegeben werden.
Wenn Sie lernen möchten, wie Sie Abfragefilter erstellen, sollten Sie sich Learning Active Directory and LDAP Filters in PowerShell ansehen.
Einschränkung der Gruppenergebnisse nach Organizational Unit (OU)
Vielleicht haben Sie verschiedene Gruppen in OUs verschachtelt. Sie möchten nicht unbedingt alle Gruppen finden, sondern nur Gruppen in einer bestimmten OU. In diesem Fall können Sie den SearchBase
-Parameter verwenden.
Der SearchBase
-Parameter ermöglicht es Ihnen, den Distinguished Name (DN) einer OU anzugeben, um mit der Suche nach Gruppen zu beginnen. Vielleicht haben Sie zum Beispiel eine OU namens Locations an der Wurzel Ihrer Domäne. In der OU Locations haben Sie für jede Standort-OU wie Austin, NYC und Los Angeles eine eigene OU erstellt. Sie suchen nur nach Gruppen in der NYC OU und müssen die anderen ausschließen.
Ein Beispiel für eine AD OU-Struktur wird unten gezeigt. Beachten Sie, dass sich andere Gruppen außerhalb der Locations-OUs befinden.
Vielleicht müssen Sie alle AD-Gruppen finden, die nur in der OU NYC vorhanden sind. Um die Abfrage einzuschränken, verwenden Sie den SearchBase
-Parameter und geben Sie den DN wie unten gezeigt an. Es werden alle Gruppen in der OU Locations zurückgegeben.
Aber jetzt müssen Sie alle Gruppen in allen OUs unter der OU Locations finden. Get-ADGroup
gibt nur Gruppen in der OU Locations selbst zurück – nicht in den untergeordneten OUs.
Um Gruppen in untergeordneten OUs zurückzugeben, müssen Sie den SearchScope
-Parameter verwenden. Dieser Parameter ähnelt dem Recursive
-Parameter, da er auch Kindobjekte überprüft.
Zum Beispiel, um alle Gruppen in beliebigen OUs unter der OU Locations zu finden, geben Sie Subtree
oder 2
an. Dieser Wert für SearchScope
sagt Get-ADGroup
, dass er rekursiv alle untergeordneten, Enkel- und weiteren OUs durchsuchen soll.
Weitere Informationen zu den Optionen des SearchScope
-Parameters finden Sie in der Dokumentation zu Get-ADGroup
.
Exportieren von AD-Gruppen und Mitgliedern
Sie wissen jetzt endlich, wie Sie die benötigten Gruppen und Gruppenmitglieder abfragen und zurückgeben können. Alle diese Informationen werden an die PowerShell-Konsole gesendet. Aber jetzt müssen Sie diese Informationen in eine CSV-Datei oder ein Excel-Arbeitsblatt übertragen.
Das Einzige, was Sie jetzt tun müssen, ist, all diese Informationen in eine Datei zu senden.
Exportieren in eine CSV-Datei
Ein beliebtes Format zum Exportieren von AD-Informationen ist eine CSV-Datei. PowerShell verfügt über ein praktisches Cmdlet, mit dem Sie ganz einfach CSV-Dateien aus PowerShell-Ausgaben erstellen können, das Export-Csv
genannt wird.
Sie können eine CSV-Datei aus einem beliebigen in diesem Artikel behandelten Befehl erstellen, indem Sie sie mit Export-Csv
verbinden. Mit dem unten stehenden Beispiel wird die gesamte Ausgabe, die Get-AdGroup
normalerweise auf der Konsole anzeigen würde, stattdessen in eine CSV-Datei umgeleitet.
Weitere Informationen zu diesem praktischen Cmdlet finden Sie unter Export-Csv: Der PowerShell-Weg, CSV-Dateien wie erstklassige Objekte zu behandeln.
Sie können Ihre Ergebnisse auch problemlos über das Cmdlet Get-AdGroupMember
in eine CSV-Datei exportieren.
Export nach Excel
PowerShell bietet keine native Möglichkeit, Informationen in Excel zu exportieren. Sie können jedoch immer das kostenlose Community-Modul namens ImportExcel herunterladen. Dieses Modul ermöglicht den direkten Export von CSV-ähnlichen Funktionen in Excel-Arbeitsblätter. Um das PowerShell-Modul zu installieren, führen Sie Install-Module ImportExcel -Scope CurrentUser
aus.
Im obigen Beispiel, wenn Sie anstelle einer CSV-Datei die Gruppen in ein Excel-Arbeitsblatt exportieren möchten, verwenden Sie das Cmdlet Export-Excel
wie unten gezeigt.
Überprüfen Sie mit der NCSC-Passwortliste, ob in Ihrer Active Directory undichte oder unsichere Passwörter vorhanden sind.
Das ImportExcel-Modul bietet eine Vielzahl von Funktionen zur Arbeit mit Excel. Wenn Sie ein anspruchsvolleres Arbeitsblatt benötigen, hat es wahrscheinlich eine Funktion für Sie.
Weitere Informationen zur Verwendung des ImportExcel-Moduls finden Sie in diesem Artikel. Es bietet eine großartige Einführung in einige häufige Anwendungsfälle, die es verarbeiten kann.
Verwalten und Berichten Sie über Active Directory, Exchange und Microsoft 365 mit ManageEngine ADManager Plus. Laden Sie die kostenlose Testversion herunter!
Schlussfolgerung
Mit nur zwei PowerShell-Cmdlets können Sie nahezu alles mit AD-Gruppen erreichen. Dieser Artikel war nur eine Einführung in die Ihnen zur Verfügung stehende Funktionalität. Nutzen Sie das hier gesammelte Wissen, folgen Sie einigen der Links zu tiefergehenden Themen im Artikel und sehen Sie, was Sie erstellen können!