Adam the Automator
Eine beliebte Verwendung von PowerShell ist die Arbeit mit Active Directory-Verzeichnisdiensten (AD). Es gibt so viele zeitsparende Dinge, die PowerShell mit AD-Objekten tun kann. Die Verwendung von PowerShell zum Abrufen von AD-Gruppenmitgliedern und -gruppen spart eine Menge Zeit.
Active Directory-Gruppen sind eine hervorragende Möglichkeit, Benutzerkonten zu segmentieren. Mithilfe von Gruppen können Administratoren den Ressourcenzugriff auf vielen Systemen definieren.
In diesem Artikel verwenden wir PowerShell, um AD-Gruppenmitglieder abzurufen und AD-Gruppenmitglieder zu exportieren. Mit diesen Informationen können Sie dann unzählige interessante Berichte erstellen.
Inhaltsverzeichnis
Voraussetzungen
Wenn Sie diesem Artikel folgen möchten, stellen Sie bitte sicher, dass die folgenden Anforderungen erfüllt sind:
- Arbeiten auf einem Windows 10-Computer mit Domänenbeitritt
- Mit einem Benutzer angemeldet, der AD-Gruppen- und Benutzerkonten lesen kann
- Das PowerShell Active Directory-Modul installiert haben
Grundlagen lernen
Zum Abfragen von AD-Gruppen und Gruppenmitgliedern 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 anderen Objekte zurück, die in dieser Gruppe vorhanden sind.
AD-Gruppen abrufen
Um AD-Gruppen mit PowerShell zu finden, können Sie das Cmdlet Get-ADGroup
verwenden. Ohne Parameter fragt Get-ADGroup
AD ab und gibt alle Gruppen in einer Domäne mit dem Parameter Filter
zurück. Der Parameter Filter
ist erforderlich. Sie können die zurückgegebenen Gruppen anhand verschiedener Kriterien einschränken.
Um beispielsweise alle Gruppen ohne Berücksichtigung von Kriterien zu finden, verwenden Sie Get-ADGroup
und geben Sie einen Platzhalter an ( Sternchen) für den Parameter Filter
. Unten sehen Sie ein Beispiel. Das Scrollen durch alle diese Gruppen kann eine Weile dauern, wenn Sie Hunderte oder sogar Tausende in Ihrer Domain haben.
Wenn Sie eine einzelne Gruppe suchen müssen, können Sie dies tun Verwenden Sie den Parameter Identity
.
Der Parameter Identity
ist ein allgemeiner Parameter für alle Active Directory PowerShell-Cmdlets. Sie können Ihre Abfrage auf ein einzelnes AD-Objekt beschränken. Wenn Sie beispielsweise überprüfen müssen, ob eine Gruppe mit dem Namen HR vorhanden ist, können Sie dies herausfinden, indem Sie den folgenden Befehl ausführen.
AD-Gruppenmitglieder abrufen
Um PowerShell zum Auflisten von Mitgliedern der AD-Gruppe zu verwenden, ist das Cmdlet Get-ADGroupMember
erforderlich. Dieses Cmdlet ruft Benutzer-, Gruppen- und Computerobjekte in einer bestimmten Gruppe ab. Möglicherweise müssen Sie alle Mitglieder der Administratorgruppe finden. In der einfachsten Form verwenden Sie einfach den Parameter Identity
und geben den Namen der Gruppe wie folgt an.
Beachten Sie, dass
Get-AdGroupMember
nur die Gruppenmitgliedschaft für Benutzer, Gruppen und Computer zurückgibt. Andere AD-Objekte wie Kontakte werden nicht zurückgegeben.
Auflisten von Gruppenmitgliedern innerhalb von Gruppenmitgliedern
Wie Sie vielleicht wissen, AD-Gruppen kann nicht nur Benutzerkonten enthalten, sondern auch andere Gruppen, die auch als Verschachtelung bezeichnet werden. Wenn eine Gruppe in einer anderen Gruppe verschachtelt ist, erben die Mitglieder dieser Gruppe dieselben Berechtigungen, die der übergeordneten Gruppe zugewiesen wurden.
Standardmäßig verwendet PowerShell Get-AdGroupMember
Cmdlet dies verschachtelte Gruppenmitglieder nicht zurückgeben. Um dies zu beheben, können Sie den Parameter Recursive
verwenden. Beispielsweise können Sie Mitglieder von Gruppen finden, die innerhalb der HR-Gruppe verschachtelt sind, indem Sie den Parameter Recursive
verwenden (siehe unten).
Mehrere Gruppen / Mitglieder gleichzeitig abrufen
Wenn Sie AD für viele verschiedene Gruppen oder Gruppenmitglieder gleichzeitig abfragen müssen, können Sie dies auch mithilfe einer PowerShell foreach-Schleife tun. Eine foreach-Schleife führt einen Befehl oder Code für jedes Element in einer Sammlung aus. In diesem Fall handelt es sich bei dieser Sammlung um eine Liste von Gruppennamen.
Möglicherweise müssen Sie alle Gruppenmitglieder in den Gruppen HR, Buchhaltung und IT finden. Dazu erstellen Sie zunächst eine Sammlung oder ein Array dieser Gruppennamen. Im folgenden Beispiel wird diese Sammlung als $groupNames
definiert. Führen Sie dann für jeden Namen in dieser Sammlung Get-ADGroupMember
aus und geben Sie den Namen jeder Gruppe für den Parameter Identity
an.
Alternativ können Sie das Cmdlet
ForEach-Object
verwenden, um Gruppen zu durchlaufen.
Verwenden alternativer Anmeldeinformationen
Wie viele andere PowerShell-Cmdlets haben die Cmdlets der AD-Gruppe ein Credential
Parameter.Wenn Sie ein AD-Gruppen-Cmdlet ausführen, werden standardmäßig Ihre angemeldeten Anmeldeinformationen zum Abfragen von Active Directory verwendet. Dieses Verhalten schreibt vor, dass Sie sich auf einem Computer mit Domänenbeitritt befinden müssen, der als Active Directory-Benutzer mit Berechtigung angemeldet ist.
Was ist jedoch, wenn Sie sich auf einem Arbeitsgruppencomputer befinden oder sich bei AD als anderer Computer authentifizieren müssen? Nutzer? In diesem Fall können Sie den Parameter Credential
verwenden. Mit diesem Parameter können Sie einen Benutzernamen und ein Kennwort angeben, die für die Authentifizierung verwendet werden sollen.
Beispielsweise hat Ihr Benutzerkonto möglicherweise nicht das Recht, eine AD-Aufgabe auszuführen. Sie haben ein Dienstkonto mit zusätzlichen Rechten. Sie können als Standardbenutzer angemeldet sein und sich dennoch wie unten gezeigt mit dem Dienstkonto authentifizieren.
Das Cmdlet Get-Credential
fordert Sie zur Eingabe eines Benutzernamens / Kennworts auf Berechtigungsnachweis. Dieser Berechtigungsnachweis wird dann zur Authentifizierung an das Cmdlet Get-AdGroup
übergeben.
Der Parameter
Credential
ist in PowerShell allgegenwärtig, um Authentifizierungsdaten bereitzustellen. Weitere Informationen finden Sie unter Verwenden des Cmdlets „Get-Credential“ von PowerShell und aller Anmeldeinformationen.
Abrufen von Gruppenmitgliedern mit Get-ADGroup?
Es klingt vielleicht nicht intuitiv, aber Sie können auch Gruppenmitglieder mit dem Cmdlet Get-ADGroup
abrufen.
Es stellt sich heraus, dass Get-ADGroup
gibt eine Eigenschaft für jede Gruppe mit dem Namen members
zurück. Hierbei handelt es sich um eine Sammlung von AD-Objekten, die Mitglieder einer Gruppe sind.
Sie können beispielsweise Gruppenmitglieder in dieser HR-Gruppe erneut suchen, ohne Get-ADGroupMember
zu verwenden Gehen Sie wie folgt vor:
Warum diese Methode über die andere verwenden? Der Hauptunterschied besteht darin, dass die Eigenschaften members
alle Arten von AD-Objekten enthalten – nicht nur Benutzer, Computer und andere Gruppen.
Möglicherweise haben Sie Kontakte innerhalb verschiedener Gruppen . Wenn Sie Get-ADGroupMember
ausführen, werden diese Kontakte nicht angezeigt. Wenn Sie jedoch Get-ADGroup
anweisen, alle Mitglieder in dieser Gruppe zurückzugeben und diese Sammlung wie unten gezeigt zu erweitern, werden die Kontakte angezeigt.
Suchen spezifischer AD-Attribute
Im obigen Abschnitt „Grundlagen“ haben Sie einfach alle Gruppen und Gruppenmitglieder zurückgegeben. Die für jede Gruppe und jedes Gruppenmitglied zurückgegebenen Informationen sind nur eine Teilmenge der AD-Attribute, die jedem Objekttyp zugeordnet sind.
Möglicherweise möchten Sie die E-Mail-Adresse eines Benutzerkontos, das Datum der letzten Anmeldung oder ein anderes zugeordnetes AD-Attribut anzeigen ? Dazu müssen Sie kreativ werden.
Möglicherweise konnten Sie alle Gruppenmitglieder in der HR-Gruppe finden, müssen aber auch die E-Mail-Adresse jedes Benutzerkontos anzeigen?
Ergebnisse filtern
Bis zu diesem Punkt haben Sie alle Gruppen und Gruppenmitglieder gefunden, aber in einer täglichen Arbeitsumgebung müssen Sie dies selten tun. Möglicherweise müssen Sie nur eine begrenzte Anzahl von Artikeln finden. Die Cmdlets der AD-Gruppe bieten verschiedene Möglichkeiten, wie Sie damit umgehen können.
Der Filterparameter
Wie bereits erwähnt, haben beide Cmdlets die Filter
Parameter. Mit diesem Parameter können Sie die Rückgabe auf viele verschiedene Arten außerhalb des Geltungsbereichs dieses Artikels einschränken.
Mit dem Parameter Filter
können Sie die Ergebnisse durch jede AD einschränken Attribut wie Name, Gruppentyp, E-Mail-Adresse, letzte Anmeldung für Benutzer usw.
Beispielsweise möchten Sie möglicherweise nur Sicherheitsgruppen suchen. In diesem Fall würden Sie ein GroupCategory
-Attribut angeben und eine Bedingung festlegen, um sicherzustellen, dass nur Security
-Gruppen zurückgegeben werden.
Vielleicht möchten Sie alle Sicherheitsgruppen finden, aber es dürfen keine lokalen Domänengruppen sein. Sie würden dann eine weitere Bedingung hinzufügen (diesmal mit dem Operator -ne
), um zu verhindern, dass lokale Domänengruppen zurückgegeben werden.
Wenn Sie lernen möchten, wie Abfragefilter erstellt werden, lesen Sie unbedingt Informationen zu Active Directory- und LDAP-Filtern in PowerShell.
Beschränken der Gruppenergebnisse nach Organisationseinheit (OU)
Möglicherweise sind verschiedene Gruppen in Organisationseinheiten verschachtelt. Sie möchten nicht unbedingt alle Gruppen finden, sondern nur Gruppen in einer bestimmten Organisationseinheit. In diesem Fall können Sie den Parameter SearchBase
verwenden.
Mit dem Parameter SearchBase
können Sie die Unterscheidung einer Organisationseinheit angeben Name (DN), um nach Gruppen zu suchen. Möglicherweise haben Sie eine Organisationseinheit namens Locations im Stammverzeichnis Ihrer Domain. In der Organisationseinheit „Standorte“ haben Sie jede Standort-Organisationseinheit wie Austin, NYC und Los Angeles erstellt. Sie suchen nur nach Gruppen in der NYC-Organisationseinheit und müssen die Anzeige der anderen einschränken.
Eine beispielhafte AD-Organisationseinheitenstruktur wird unten gezeigt.Beachten Sie, dass andere Gruppen außerhalb der Organisationseinheiten „Standorte“ vorhanden sind.
Möglicherweise müssen Sie alle AD-Gruppen finden, die sich nur in der Organisationseinheit „NYC“ befinden. Um die Abfrage einzuschränken, verwenden Sie den Parameter SearchBase
, der den DN wie unten gezeigt bereitstellt. Alle Gruppen innerhalb der Organisationseinheit „Standorte“ werden zurückgegeben.
Jetzt müssen Sie jedoch alle Gruppen in allen Organisationseinheiten unter der Organisationseinheit „Standorte“ finden. Get-ADGroup
gibt nur Gruppen in der Organisationseinheit „Standorte“ selbst zurück – nicht in den untergeordneten Organisationseinheiten.
Um Gruppen innerhalb untergeordneter Organisationseinheiten zurückzugeben, müssen Sie das SearchScope
Parameter. Dieser Parameter ähnelt dem Parameter Recursive
, da er auch untergeordnete Objekte überprüft.
Um beispielsweise alle Gruppen in einer Organisationseinheit unter der Organisationseinheit „Standorte“ zu finden, Geben Sie Subtree
oder 2
an. Dieser Wert für SearchScope
weist Get-ADGroup
an, alle Kinder, Enkelkinder und nach unten gerichteten Organisationseinheiten rekursiv zu betrachten.
Eine vollständige Aufschlüsselung der Parameteroptionen SearchScope
finden Sie in der Dokumentation Get-ADGroup
.
Exportieren von AD-Gruppen und -Mitgliedern
Damit wissen Sie endlich, wie Sie die benötigten Gruppen und Gruppenmitglieder abfragen und zurückgeben können. Alle diese Informationen werden an die PowerShell-Konsole gesendet. Jetzt müssen Sie diese Informationen als CSV-Datei oder Excel-Arbeitsblatt speichern.
Jetzt müssen Sie nur noch alle diese Informationen in eine Datei senden.
Exportieren nach eine CSV
Ein beliebtes Format zum Exportieren von AD-Informationen ist eine CSV. PowerShell verfügt über ein praktisches Cmdlet, mit dem Sie auf einfache Weise CSV-Dateien aus der PowerShell-Ausgabe mit dem Namen Export-Csv
erstellen können.
Sie können eine CSV-Datei mit jedem in diesem Artikel behandelten Befehl erstellen indem Sie es an Export-Csv
weiterleiten. Im folgenden Beispiel werden alle Ausgaben, die Get-AdGroup
an die Konsole zurückgegeben hätte, an eine CSV-Datei umgeleitet.
Weitere Informationen zu diesem praktischen Cmdlet finden Sie unter Export-Csv: Die PowerShell-Methode zum Behandeln von CSV-Dateien als erstklassige Bürger.
Exportieren nach Excel
PowerShell bietet keine native Methode zum Exportieren von Informationen nach Excel. Sie können jedoch jederzeit das kostenlose Community-Modul ImportExcel herunterladen. Dieses Modul bringt CSV-ähnliche Exportfunktionen direkt in Excel-Arbeitsblätter. Führen Sie zum Installieren des PowerShell-Moduls Install-Module ImportExcel -Scope CurrentUser
aus.
Im obigen Beispiel mussten Sie anstelle einer CSV-Datei die Gruppen in ein Excel-Arbeitsblatt exportieren Verwenden Sie das Cmdlet Export-Excel
wie unten gezeigt.
Das ImportExcel-Modul verfügt über eine Vielzahl von Funktionen mit Excel. Wenn Sie ein schickeres 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 gute Einführung in einige gängige Anwendungsfälle.
Schlussfolgerung
Mit nur zwei PowerShell-Cmdlets können Sie dies tun fast alles mit AD-Gruppen. Dieser Artikel war nur eine Einführung in die Funktionen, die Ihnen zur Verfügung stehen. Nutzen Sie das hier gesammelte Wissen, folgen Sie einigen Links zu tieferen Themen-Tauchgängen im Artikel und sehen Sie, was Sie bauen können!