Microsoft Active Directory dient als zentraler Punkt für die Verwaltung, Autorisierung und Authentifizierung. In AD wird der Zugriff auf Netzwerkressourcen für Sicherheitsprinzipale wie Benutzerkonten und Computerkonten gewährt, und diese Berechtigungen können sich im Laufe der Zeit ändern. Um die Zugriffsverwaltung zu vereinfachen und die Sicherheit zu verbessern, verwenden mittlere und große Unternehmen häufig Active Directory-Sicherheitsgruppen, die Benutzerkonten, Computerkonten und andere Gruppen enthalten können. Außerdem verwenden sie häufig Verteilergruppen, um E-Mail-Verteilerlisten zu verwalten. Sowohl Sicherheits- als auch Verteilergruppen haben eindeutige Sicherheitsbezeichner (SIDs) und global eindeutige Bezeichner (GUIDs).
Das ADUC MMC-Snap-In eignet sich hervorragend für die Verwaltung beider Gruppentypen, aber PowerShell ist eine viel effizientere Methode, um sie in großen Mengen zu verwalten.
Wenn Sie noch nicht mit AD-Gruppen und der Gruppenverwaltung vertraut sind, lesen Sie bitte den Active Directory Group Management Best Practice Guide, bevor Sie fortfahren.
Auch sollten Sie bedenken, dass Sie das Modul für die Interaktion mit AD – das Active Directory-Modul für Microsoft Windows PowerShell – importieren müssen, um diese PowerShell-Skripte verwenden zu können. Dieses Modul wurde in Windows Server 2008 R2 eingeführt und ist in Windows Server 2012 und höher standardmäßig aktiviert. Sie können die vollständige Liste der AD-Modul-Cmdlets abrufen, indem Sie den folgenden Befehl ausführen:
Get-Command -Module ActiveDirectory
Die vollständige Liste enthält 147 Cmdlets; allerdings beziehen sich nur diese elf auf Active Directory-Gruppen:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
Erstellen einer Active Directory-Gruppe mit PowerShell
Um eine AD-Gruppe zu erstellen, verwenden Sie das Cmdlet New-ADGroup. Die Syntax des Cmdlets erhalten Sie durch Ausführen des folgenden Befehls:
Get-Command New-ADGroup –Syntax
Am einfachsten können Sie eine Gruppe erstellen, indem Sie dieses kurze Skript ausführen:
New-ADGroup "Group Name"
Das System fordert Sie auf, den Parameter „GroupScope“ anzugeben, und erstellt dann eine neue Gruppe. Diese Gruppe hat jedoch Standardwerte wie:
- Sie wird im Standard-LDAP-Container „Benutzer“ erstellt.
- Sie hat den Gruppentyp „Sicherheit“.
- Die Felder „Mitglieder“, „Mitglied von“, „Beschreibung“, „E-Mail“ und „Notizen“ sind alle leer.
Stellen wir uns vor, wir möchten eine Sicherheitsgruppe mit dem Namen „Qualität“ in unserem AD DC erstellen. Verwenden wir die folgenden Parameter: Sie sollte sich in der OU „Produktion“ befinden (-Pfad), sie sollte eine Sicherheitsgruppe sein (-GroupCategory) und sie sollte global sein (-GroupScope).
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
Wenn Sie eine universelle Verteilergruppe erstellen möchten, ändern Sie einfach den Parameter -GroupCategory auf „Verteilung“ und den Parameter -GroupScope auf „Universal“. Sie können auch den LDAP-Pfad ändern, indem Sie den -Path-Parameter ändern.
Löschen einer Active Directory-Gruppe mit PowerShell
Um eine AD-Gruppe zu löschen, verwenden Sie das Cmdlet Remove-ADGroup. Das einfachste Skript dafür sieht wie folgt aus:
Remove-ADGroup -Identity Quality
Sie werden aufgefordert, das Löschen der Gruppe zu bestätigen.
Hinzufügen von Benutzern und Computern zu einer Gruppe mit PowerShell
Sie können einer AD-Gruppe mit dem Cmdlet Add-AdGroupMember Benutzer hinzufügen. Wenn Sie zum Beispiel zwei Benutzer, B. Jackson und E.Franklin, zur Gruppe „Quality“ hinzufügen möchten, würde das Skript folgendermaßen aussehen:
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
Nachdem Sie Benutzer zu einer Sicherheitsgruppe hinzugefügt haben, können Sie das folgende Skript ausführen, um zu überprüfen, ob sie als Mitglieder aufgeführt sind:
Get-ADGroupMember -Identity Quality
Wenn Sie Benutzer zu einer anderen Sicherheits- oder Verteilergruppe hinzufügen müssen, z. B. „Domain Admins“, geben Sie „Domain Admins“ als Wert für den Parameter -Identity an. Wenn eine Gruppe Mitglied einer anderen sein soll, geben Sie einen Gruppennamen als Wert für den Parameter -Members an. Das gleiche Prinzip gilt für Computerkonten, allerdings müssen Sie ein Dollarzeichen ($) an das Ende des Computerkontonamens anhängen. Um beispielsweise den Computer „WKS043“ zu einer Gruppe hinzuzufügen, geben Sie „WKS043$“ als Wert für den Parameter -Member an:
Add-AdGroupMember -Identity Quality -Members WKS043$
Hinzufügen eines Benutzers zu mehreren Gruppen
Um einen Benutzer zu mehreren Gruppen gleichzeitig hinzuzufügen, führen Sie das folgende Skript aus.
"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")
Sie werden aufgefordert, den Benutzernamen einzugeben.
Hinzufügen von Benutzern zu einer Gruppe aus einer CSV-Datei
Wenn Sie eine große Anzahl von Benutzern zu einer Gruppe hinzufügen möchten, können Sie diese in einer CSV-Datei angeben und dann diese Datei importieren. Beachten Sie, dass die Liste der Benutzernamen in der CSV-Datei die SamAccountNames in der Spalte „users“ enthalten muss, wie unten gezeigt:
Um Benutzer aus einer CSV-Datei zur Gruppe hinzuzufügen, führen Sie das folgende PowerShell-Skript aus:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
Benutzer von einer Gruppe in eine andere kopieren
Wenn Sie alle Mitglieder von einer Gruppe in eine andere Gruppe kopieren möchten, führen Sie das folgende Skript aus:
Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}
Entfernen von Benutzern oder Computern aus einer Gruppe
Um einen Benutzer aus einer Gruppe zu entfernen, verwenden Sie das Cmdlet „Remove-ADGroupMember“:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
Um ein Computerkonto aus einer Gruppe zu entfernen, geben Sie den Computernamen mit einem Dollarzeichen ($) am Ende als Wert für den Parameter -Members an.
Entfernen mehrerer Benutzerkonten aus einer Gruppe
Eine einfache Möglichkeit, mehrere Benutzer aus einer AD-Gruppe zu entfernen, besteht darin, eine CSV-Datei mit der Liste der Benutzernamen zu erstellen und diese Benutzer dann mit diesem Skript aus dem Gruppenobjekt zu entfernen:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
Entfernen eines Benutzers aus allen Gruppen
Um einen Benutzer aus allen Gruppen zu entfernen, führen Sie dieses Skript aus:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}
Beachten Sie, dass der Benutzer alle Gruppenzugehörigkeiten mit Ausnahme von „Domain Users“ verliert, die bei Bedarf manuell entfernt werden können.
Berichten über Active Directory-Gruppen
Nachdem wir nun wissen, wie viele allgemeine Active Directory-Verwaltungsaufgaben im Zusammenhang mit Gruppen mithilfe von PowerShell durchgeführt werden können, sehen wir uns an, wie wir Berichte über die in AD vorhandenen Gruppen erstellen:
Um alle Gruppen in AD aufzulisten, verwenden Sie das folgende Skript:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Natürlich möchten Sie auch AD-Gruppenmitglieder und AD-Gruppenmitgliedschaftsänderungen überprüfen. Hier sind Links zu Anleitungen für die Durchführung dieser komplexeren Aufgaben:
- Überwachen von Änderungen an der Active Directory-Gruppenmitgliedschaft
- Abrufen von Berichten über die AD-Benutzergruppenmitgliedschaft
- Exportieren von Mitgliedern einer bestimmten AD-Gruppe
- Verwalten von OUs und Verschieben ihrer Objekte mit PowerShell
Abschluss
Nachdem Sie nun gelernt haben, wie Sie Gruppen und Gruppenmitgliedschaften in Active Directory mithilfe von PowerShell-Skripts verwalten können, versuchen Sie, einige der Gruppenverwaltungsaufgaben selbst auszuführen. Seien Sie jedoch vorsichtig und vergessen Sie nicht, die Active Directory-Papierkorbfunktion zu aktivieren, damit Sie Ihre Änderungen einfach zurücksetzen können, falls etwas schief geht. Denken Sie daran, dass das ADUC MMC-Snap-In hervorragend für die Verwaltung von Gruppen und Gruppenmitgliedschaften geeignet ist, aber PowerShell ist viel besser für die Verwaltung von Gruppen in großen Mengen.