Het beheren van AD-groepen met Get-ADGroup en meer

Met behulp van de ActiveDirectory PowerShell-module kunt u AD-groepen opvragen met Get-AdGroup, groepen en groepsleden toevoegen, bijwerken en verwijderen. In deze blogpost ga je een beetje leren over de Active Directory-groeps-PowerShell-cmdlets met een heleboel voorbeelden ter referentie.

Active Directory Group Cmdlets

Zodra u de ActiveDirectory PowerShell-module installeert, vindt u een paar cmdlets beschikbaar om groepen te beheren.

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.

Met behulp van deze cmdlets en een beetje PowerShell kung-fu kunt u elk aspect van de Active Directory-groep beheren met PowerShell.

Vind de leden van een groep met Get-ADGroupMember

De Get-AdGroupMember cmdlet retourneert alle leden in een groep.

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

Als alternatief kunt u de memberOf eigenschap van een bepaalde gebruiker raadplegen met behulp van de Get-Aduser cmdlet. Voor een opfriscursus over het opbouwen van filters, bekijk Learning Active Directory Directory and LDAP Filters in PowerShell.

Twee voorbeelden staan hieronder.

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

Dit retourneert een verzameling ADPrincipal objecten.

Exporteer de leden van een groep naar een CSV-bestand

Dit exporteert de voornaam, achternaam en e-mailadres van elke gebruiker. Pijp de resultaten van Get-ADGroupMember naar Get-ADUser omdat dit ADPrincipal-objecten zijn die niet alle eigenschappen hebben die ADUser-objecten hebben.

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

Merk op dat de NoTypeInformation-parameter van Export-CSV wordt gebruikt om ervoor te zorgen dat het CSV-bestand compatibel is met andere toepassingen.

Vind groepen zonder leden met Get-ADGroup

Gebruik Get-AdGroup om groepen te vinden met behulp van filters. Hieronder twee voorbeelden.

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

Maak een nieuwe beveiligingsgroep met New-ADGroup

U maakt een nieuwe beveiligingsgroep met behulp van het New-AdGroup-commando.

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

Als er geen Path-parameter wordt opgegeven, wordt de nieuwe groep aangemaakt in de Users-container. Het groepsbereik moet DomainLocal, Global of Universal zijn.

Maak een nieuwe distributiegroep met New-ADGroup

Gebruik opnieuw New-AdGroup om een distributiegroep aan te maken. Kies deze keer een GroupCategory van Distribution.

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

Voeg leden toe aan een groep met Add-ADGroupMember

Gebruikers toevoegen aan een Active Directory-groep met PowerShell kan met behulp van de cmdlet Add-AdGroupMember of de cmdlet Add-ADPrincipalGroupMembership worden gedaan.

Deze opdracht specificeert de groep als de Identity.

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

Deze opdracht specificeert de AD-principal als de Identity.

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

Schrijf naar het Notities-eigenschap van een groep met Set-AdGroup

Het veld dat in ADUC wordt gelabeld als Notities wordt vertegenwoordigd door de Info-eigenschap die wordt geretourneerd door Get-AdGroup.

Zoek eerst de groep die moet worden gewijzigd, stel de Info-eigenschap in en gebruik vervolgens Set-AdGroup om de wijziging naar AD te committeren.

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

Verwijder groepsleden met Remove-ADGroupMember

Net als alle PowerShell-cmdlets, kunt u de Confirm-parameter gebruiken om te worden gevraagd voordat een wijziging wordt aangebracht. Dit gedrag geldt ook voor de cmdlets Remove-AdGroupMember en Remove-ADPrincipalGroupMembership.

Hieronder kunt u groepsleden verwijderen zonder bevestiging.

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)>

Of u kunt ervoor kiezen groepsleden te verwijderen met bevestiging door de Confirm-parameter te gebruiken.

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

Verwijder een groep met Remove-ADGroup

Verwijder een groep zonder bevestiging en met bevestiging.

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

Hernoem een groep met Rename-ADObject

U kunt een groep hernoemen via een enkele opdrachtregel met Rename-ADObject.

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

Krijg het aantal groepen met Get-ADGroup

Moet u het totale aantal groepen vinden dat wordt geretourneerd via Get-AdGroup? Gebruik de Count-eigenschap.

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

Vind groepen met een manager met Get-ADGroup

Filter alle groepen die aan een manager zijn toegewezen met Get-AdGroup en een goed geconstrueerde LDAP-filter.

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

Er is geen equivalent PowerShell-filter hiervoor.

Zoek groepen beheerd door een specifieke gebruiker met Get-ADGroup

Verbeter je filtervaardigheden en vind alle groepen beheerd door een specifieke gebruiker met behulp van een PowerShell-filter of LDAP-filter.

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

Stel de groepsbeheerder in met Set-ADGroup

Het tabblad Beheerd door in ADUC voor groepen stelt je in staat om iemand aan te wijzen die verantwoordelijk is voor het lidmaatschap van de groep. Dit betekent niet automatisch dat de beheerder het groepslidmaatschap kan wijzigen. Hiervoor moeten de beveiligingsmachtigingen worden gewijzigd voor het Lid-eigenschap van de betreffende groep.

Het aanvinken van het Beheerder kan de ledenlijst bijwerken-vak voor een groep in Active Directory Users and Computers (ADUC) wijzigt de machtigingen om dit toe te staan.

Managed By tab in Active Directory Users and Computers

Gebruik Set-ADGroup om het BeheerdDoor-attribuut in te stellen:

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

Het bijwerken van de toegangscontrolemachtigingen vereist enkele extra stappen. De volgende codefragment verleent de gebruiker Kristin Diaz de mogelijkheid om het lidmaatschap van de groep te beheren. bf9679c0-0de6-11d0-a285-00aa003049e2 is de GUID voor het Lid-eigenschap van de groep.

Als Kristin ook is ingesteld als de beheerder van de groep, wordt het selectievakje ingeschakeld. Zo niet, dan kan Kristin nog steeds het lidmaatschap van de groep beheren, maar wordt ze niet weergegeven in ADUC als de beheerder.

Vind gelekte & onveilige wachtwoorden in uw Active Directory door te controleren tegen de NCSC-wachtwoordlijst.

$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)"

Vind alle beveiligingsgroepen

Lijst alle beveiligingsgroepen in Active Directory met PowerShell door uw zoekopdracht te beperken tot alleen beveiligingsgroepen met deze twee voorbeelden. Wat is die LDAP-filter, vraagt u zich af? Leer alles over LDAP-filters.

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

Vind distributiegroepen

Gebruik PowerShell om Active Directory-groepen (distributie) te lijsten die beveiligingsgroepen uitsluiten met behulp van deze twee voorbeelden.

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

Vind groepslidmaatschap voor een gebruiker met Get-ADPrincipalGroupMembership

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

Merk op dat deze opdracht toegang tot een wereldwijde catalogus vereist.

Vind groepen in een OU, zonder enige sub-OUs

Wees gedetailleerd met behulp van de SearchBase-parameter om uw zoekopdracht te beperken tot een enkele OU met behulp van deze twee voorbeelden.

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

Vind groepen in een OU, inclusief eventuele sub-OUs

Moet u alle groepen in onderliggende OUs vinden? Gebruik een SearchScope van SubTree.

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

Samenvatting

Dit concludeert onze voorbeeldgestuurde demonstratie van het beheren van AD-groepen met PowerShell. Pak een paar van deze, probeer ze uit in uw organisatie en begin met automatiseren!

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