Verwaltung von AD-Gruppen mit Get-ADGroup und mehr

Mit dem ActiveDirectory PowerShell-Modul können Sie AD-Gruppen mit Get-AdGroup abfragen, Gruppen und Gruppenmitglieder hinzufügen, aktualisieren und entfernen. In diesem Blog-Beitrag lernen Sie ein wenig über die Active Directory Group PowerShell-Cmdlets mit einer Vielzahl von Beispielen zur Referenz.

Active Directory Group Cmdlets

Sobald Sie das ActiveDirectory PowerShell-Modul installiert haben, finden Sie einige Cmdlets zur Verwaltung von Gruppen.

Cmdlet Name Description
Add-ADGroupMember Used to add members to an AD group.
Add-ADPrincipalGroupMembership Used to add an AD principal to AD groups.
Get-ADGroup Used to return a group or groups from AD.
Get-ADGroupMember Used to return the members of an AD group.
Get-ADPrincipalGroupMembership Used to get the groups an AD principal is a member of.
New-ADGroup Used to create a new AD group.
Remove-ADGroup Used to delete an AD group.
Remove-ADGroupMember Used to remove members from an AD group.
Remove-ADPrincipalGroupMembership Used to remove an AD principal from AD groups.
Set-ADGroup Used to set the properties of an AD group.

Mit diesen Cmdlets und ein wenig PowerShell-Kung-Fu können Sie jeden Aspekt der Active Directory-Gruppe mit PowerShell verwalten.

Mit Get-ADGroupMember die Mitglieder einer Gruppe finden

Das Cmdlet Get-AdGroupMember gibt alle Mitglieder einer Gruppe zurück.

PS51> Get-ADGroupMember -Identity <identity string or object>

Alternativ können Sie die Eigenschaft „memberOf“ eines bestimmten Benutzers unter Verwendung des Cmdlets Get-Aduser abrufen. Wenn Sie eine Auffrischung darüber benötigen, wie Sie Filter erstellen können, schauen Sie sich Learning Active Directory Directory and LDAP Filters in PowerShell an.

Hier sind zwei Beispiele.

PS51> Get-ADUser -Filter 'memberOf -eq ""'
PS51> Get-ADUser -LDAPFilter '(memberOf=)'

Dies gibt eine Sammlung von ADPrincipal-Objekten zurück.

Exportieren Sie die Mitglieder einer Gruppe in eine CSV-Datei.

Dieser Befehl exportiert den Vornamen, Nachnamen und die E-Mail-Adresse jedes Benutzers. Leiten Sie die Ergebnisse von Get-ADGroupMember an Get-ADUser weiter, da es sich um ADPrincipal-Objekte handelt, die nicht über alle Eigenschaften von ADUser-Objekten verfügen.

PS51> $GroupMembers = Get-ADGroupMember -Identity 'Professional Services Department'
PS51> $GroupMembers | Get-ADUser -Properties GivenName,Surname,Mail | Select-Object GivenName,Surname,Mail | Export-CSV -Path GroupMembers.CSV -NoTypeInformation

Beachten Sie die Verwendung des Parameters NoTypeInformation von Export-CSV, um sicherzustellen, dass die CSV-Datei mit anderen Anwendungen kompatibel ist.

Suchen Sie nach Gruppen ohne Mitglieder mit Get-ADGroup

Verwenden Sie Get-AdGroup, um Gruppen mit Filtern zu finden. Hier sind zwei Beispiele.

PS51> Get-ADGroup -Filter "Members -notlike '*'"
PS51> Get-ADGroup -LDAPFilter "(!(member=*))"

Erstellen Sie eine neue Sicherheitsgruppe mit New-ADGroup

Sie können eine neue Sicherheitsgruppe mit dem Befehl New-AdGroup erstellen.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group> -Path '<path of the OU tht will host the new group>'

Wenn kein Path-Parameter angegeben wird, wird die neue Gruppe im Container Benutzer erstellt. Der Gruppenumfang muss entweder DomainLocal, Global oder Universal sein.

Erstellen Sie eine neue Verteilergruppe mit New-ADGroup

Verwenden Sie erneut New-AdGroup, um eine Verteilergruppe zu erstellen. Wählen Sie diesmal eine GroupCategory von Distribution.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group>  -GroupCategory Distribution -Path '<path of the OU tht will host the new group>'

Fügen Sie Mitglieder einer Gruppe mit Add-ADGroupMember hinzu

Benutzer können mit PowerShell mithilfe des Befehls Add-AdGroupMember oder des Befehls Add-ADPrincipalGroupMembership einer Active Directory-Gruppe hinzugefügt werden.

Dieser Befehl gibt die Gruppe als Identity an.

PS51> Add-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>

Dieser Befehl gibt den AD-Principal als Identity an.

PS51> Add-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Schreiben Sie in das Notes-Eigenschaftsfeld einer Gruppe mit Set-AdGroup

Das Feld „Notizen“ in ADUC wird durch die aus Get-AdGroup zurückgegebene Eigenschaft „Info“ dargestellt.

Finden Sie zuerst die zu ändernde Gruppe, setzen Sie die Eigenschaft „Info“ und verwenden Sie dann Set-AdGroup, um die Änderung in AD zu übernehmen.

PS51> $group = Get-ADGroup -Identity <identity string or object>
PS51> $group.Info = 'Important notes on this group'
PS51> Set-ADGroup $group

Entfernen Sie Gruppenmitglieder mit Remove-ADGroupMember

Wie alle PowerShell-Cmdlets können Sie den Parameter „Confirm“ verwenden, um vor einer Änderung aufgefordert zu werden. Dieses Verhalten gilt auch für die Cmdlets „Remove-AdGroupMember“ und „Remove-ADPrincipalGroupMembership“.

Unten können Sie Gruppenmitglieder ohne Bestätigung entfernen.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Oder Sie können wählen, Gruppenmitglieder mit Bestätigung unter Verwendung des Parameters „Confirm“ zu entfernen.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)> -Confirm
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)> -Confirm

Löschen einer Gruppe mit Remove-ADGroup

Löschen einer Gruppe ohne Bestätigung und mit Bestätigung.

PS51> Remove-ADGroup -Identity <identity string or object>
PS51> Remove-ADGroup -Identity <identity string or object> -Confirm

Gruppe mit Rename-ADObject umbenennen

Sie können eine Gruppe über einen Einzeiler mit Rename-ADObject umbenennen.

PS51> Rename-ADObject -Identity <identity string or object> -NewName '<new name>'

Anzahl der Gruppen mit Get-ADGroup abrufen

Müssen Sie die Gesamtzahl der über Get-AdGroup zurückgegebenen Gruppen finden? Verwenden Sie die Eigenschaft „Count“.

PS51> (Get-ADGroup -Filter '*').Count

Gruppen mit einem Manager finden mit Get-ADGroup

Filtern Sie alle Gruppen, denen ein Manager zugewiesen ist, mit Get-AdGroup und einem gut formulierten LDAP-Filter.

PS51> Get-ADGroup -LDAPFilter '(managedby=*)'

Es gibt keinen PowerShell-Filter, der dafür äquivalent ist.

Finden Sie Gruppen, die von einem bestimmten Benutzer verwaltet werden, mithilfe von Get-ADGroup

Verbessern Sie Ihre Filterfähigkeiten und finden Sie alle Gruppen, die von einem bestimmten Benutzer verwaltet werden, indem Sie entweder einen PowerShell-Filter oder einen LDAP-Filter verwenden.

PS51> Get-ADGroup -Filter 'managedby -eq "<distinguished name of user>"'
PS51> Get-ADGroup -LDAPFilter '(managedby=<distinguished name of user>)'

Legen Sie den Gruppenmanager mit Set-ADGroup fest

Das Register Managed By in ADUC für Gruppen ermöglicht es Ihnen, jemanden zu bestimmen, der für die Mitgliedschaft der Gruppe verantwortlich ist. Das bedeutet jedoch nicht automatisch, dass der Manager die Gruppenmitgliedschaft ändern kann. Dafür müssen die Sicherheitsberechtigungen für das Attribut Member der betreffenden Gruppe geändert werden.

Wenn Sie das Kontrollkästchen Manager kann Mitgliederliste aktualisieren für eine Gruppe in Active Directory-Benutzer und -Computer (ADUC) aktivieren, werden die Berechtigungen entsprechend geändert.

Managed By tab in Active Directory Users and Computers

Verwenden Sie Set-ADGroup, um das Attribut ManagedBy festzulegen:

PS51> Set-ADGroup -ManagedBy '<distinguished name, GUID, SID or SAM Account name of manager>'

Das Aktualisieren der Zugriffssteuerungsliste erfordert einige weitere Schritte. Der folgende Codeausschnitt gewährt dem Benutzer Kristin Diaz die Möglichkeit, die Mitgliedschaft der Gruppe zu verwalten. bf9679c0-0de6-11d0-a285-00aa003049e2 ist die GUID für das Attribut Member der Gruppe.

Wenn Kristin auch als Manager der Gruppe festgelegt ist, wird das Kontrollkästchen aktiviert sein. Wenn nicht, kann Kristin immer noch die Mitgliedschaft der Gruppe verwalten, wird jedoch in ADUC nicht als Manager angezeigt.

Finden Sie ausgelaufene und unsichere Passwörter in Ihrem Active Directory, indem Sie sie mit der NCSC Passwortliste abgleichen.

$group = Get-ADGroup -Identity 'Professional Services Department'
$manager = Get-ADUser -Identity 'Kristin.Diaz'
$NTPrincipal = New-Object System.Security.Principal.NTAccount $manager.samAccountName
$objectGUID = New-Object GUID 'bf9679c0-0de6-11d0-a285-00aa003049e2'
$acl = Get-ACL "AD:$($group.distinguishedName)"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $NTPrincipal,'WriteProperty','Allow',$objectGUID
$acl.AddAccessRule($ace)
Set-ACL -AclObject $acl -Path "AD:$($group.distinguishedName)"

Finden Sie alle Sicherheitsgruppen

Listen Sie alle Sicherheitsgruppen im Active Directory mit PowerShell auf, indem Sie Ihre Suchabfrage auf nur Sicherheitsgruppen mit diesen beiden Beispielen beschränken. Was ist dieser LDAP-Filter, fragen Sie? Erfahren Sie alles über LDAP-Filter.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Security"'
PS51> Get-ADGroup -LDAPFilter '(groupType:1.2.840.113556.1.4.803:=2147483648)'

Finden Sie Verteilergruppen

Verwenden Sie PowerShell, um Active Directory-Gruppen (Verteilung) aufzulisten, die Sicherheitsgruppen mit diesen beiden Beispielen ausschließen.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Distribution"'
PS51> Get-ADGroup -LDAPFilter '(!(groupType:1.2.840.113556.1.4.803:=2147483648))'

Finden Sie die Gruppenmitgliedschaft für einen Benutzer mit Get-ADPrincipalGroupMembership

PS51> Get-ADPrincipalGroupMembership -Identity <identity string or object>

Beachten Sie, dass dieser Befehl Zugriff auf einen globalen Katalog erfordert.

Finden Sie Gruppen in einer OU, ohne Unter-OU’s einzuschließen

Werden Sie detailgenau, indem Sie den Parameter SearchBase verwenden, um Ihre Suche auf eine einzige OU mit diesen beiden Beispielen zu beschränken.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel

Finden Sie Gruppen in einer OU, einschließlich aller Unter-OU’s

Müssen Sie alle Gruppen in Unter-OU’s finden? Verwenden Sie einen SearchScope von SubTree.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope SubTree
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope SubTree

Zusammenfassung

Damit endet unsere beispielgesteuerte Demo zur Verwaltung von AD-Gruppen mit PowerShell. Probieren Sie einige davon in Ihrer Organisation aus und beginnen Sie mit der Automatisierung!

Source:
https://adamtheautomator.com/get-adgroup/