Gestion des groupes AD avec Get-ADGroup et plus encore

À l’aide du module PowerShell ActiveDirectory, vous pouvez interroger les groupes AD avec Get-AdGroup, ajouter, mettre à jour et supprimer des groupes et des membres de groupe. Dans ce billet de blog, vous allez apprendre un peu sur les cmdlets PowerShell pour les groupes Active Directory, avec de nombreux exemples à titre de référence.

Cmdlets pour les groupes Active Directory

Une fois que vous avez installé le module PowerShell ActiveDirectory, vous trouverez quelques cmdlets disponibles pour gérer les groupes.

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.

En utilisant ces cmdlets et un peu de PowerShell kung-fu, vous pouvez gérer tous les aspects du groupe Active Directory avec PowerShell.

Trouvez les membres d’un groupe avec Get-ADGroupMember

La cmdlet Get-AdGroupMember retourne tous les membres d’un groupe.

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

Alternativement, vous pouvez faire référence à la propriété memberOf d’un utilisateur particulier en utilisant la cmdlet Get-Aduser. Pour un rappel sur la façon de construire des filtres, consultez L’apprentissage des filtres Active Directory et LDAP dans PowerShell.

Deux exemples sont donnés ci-dessous.

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

Cela retourne une collection d’objets ADPrincipal.

Exportez les membres d’un groupe vers un fichier CSV.

Cela exporte le prénom, le nom de famille et l’adresse e-mail de chaque utilisateur. Passez les résultats de Get-ADGroupMember à Get-ADUser car ce sont des objets ADPrincipal qui n’ont pas toutes les propriétés des objets ADUser.

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

Remarquez l’utilisation du paramètre NoTypeInformation de Export-CSV pour garantir que le fichier CSV est compatible avec d’autres applications.

Recherchez des groupes sans membres avec Get-ADGroup

Utilisez Get-AdGroup pour rechercher des groupes en utilisant des filtres. Deux exemples ci-dessous.

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

Créez un nouveau groupe de sécurité avec New-ADGroup

Vous créez un nouveau groupe de sécurité en utilisant la commande New-AdGroup.

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

Si aucun paramètre Path n’est fourni, le nouveau groupe sera créé dans le conteneur Users. La portée du groupe doit être soit DomainLocal, Global ou Universal.

Créez un nouveau groupe de distribution avec New-ADGroup

Utilisez à nouveau New-AdGroup pour créer un groupe de distribution. Cette fois, choisissez une GroupCategory de Distribution.

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

Ajoutez des membres à un groupe avec Add-ADGroupMember

L’ajout d’utilisateurs à un groupe Active Directory avec PowerShell peut être effectué en utilisant la cmdlet Add-AdGroupMember ou la cmdlet Add-ADPrincipalGroupMembership.

Cette commande spécifie le groupe comme Identity.

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

Cette commande spécifie le principal AD comme Identity.

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

Écrivez dans la propriété Notes d’un groupe avec Set-AdGroup

Le champ étiqueté Notes dans ADUC est représenté par la propriété Info renvoyée par Get-AdGroup.

Tout d’abord, trouvez le groupe à modifier, définissez la propriété Info puis utilisez Set-AdGroup pour appliquer la modification à AD.

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

Supprimez les membres du groupe avec Remove-ADGroupMember

Comme tous les cmdlets PowerShell, vous pouvez utiliser le paramètre Confirm pour être invité avant qu’une modification soit effectuée. Ce comportement s’applique également aux cmdlets Remove-AdGroupMember et Remove-ADPrincipalGroupMembership.

Vous pouvez supprimer les membres du groupe sans confirmation ci-dessous.

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

Ou vous pouvez choisir de supprimer les membres du groupe avec confirmation en utilisant le paramètre Confirm.

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

Supprimez un groupe avec Remove-ADGroup

Supprimez un groupe sans confirmation et avec confirmation.

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

Renommez un groupe avec Rename-ADObject

Vous pouvez renommer un groupe en une seule ligne en utilisant Rename-ADObject.

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

Obtenez le nombre de groupes avec Get-ADGroup

Do you need to find the total numbers of groups returned via Get-AdGroup? Use the Count property.

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

Find groups with a manager with Get-ADGroup

Filter all groups that have a manager assigned to them with Get-AdGroup and a well-crafted LDAP filter.

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

Il n’y a pas d’équivalent PowerShell pour ce filtre.

Trouver des groupes gérés par un utilisateur spécifique avec Get-ADGroup

Améliorez vos compétences en filtrage et trouvez tous les groupes gérés par un utilisateur spécifique en utilisant soit un filtre PowerShell, soit un filtre LDAP.

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

Définir le responsable du groupe avec Set-ADGroup

L’onglet Managed By dans ADUC pour les groupes vous permet de désigner une personne responsable de l’adhésion au groupe. Cela ne signifie pas automatiquement que le responsable peut modifier l’adhésion au groupe. Pour que cela soit possible, les autorisations de sécurité doivent être modifiées sur la propriété Member du groupe en question.

Le fait de cocher la case Le gestionnaire peut mettre à jour la liste d’adhésion pour un groupe dans Utilisateurs et ordinateurs Active Directory (ADUC) modifie les autorisations pour permettre cela.

Managed By tab in Active Directory Users and Computers

Utilisez Set-ADGroup pour définir l’attribut ManagedBy:

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

La mise à jour de la liste de contrôle d’accès nécessite quelques étapes supplémentaires. Le code suivant accorde à l’utilisateur Kristin Diaz la capacité de gérer l’adhésion au groupe. bf9679c0-0de6-11d0-a285-00aa003049e2 est le GUID pour la propriété Member du groupe.

Si Kristin est également définie comme responsable du groupe, la case sera cochée. Sinon, Kristin pourra toujours gérer l’adhésion au groupe mais ne sera pas affichée dans ADUC comme responsable.

Trouvez les mots de passe divulgués et non sécurisés dans votre Active Directory en les vérifiant par rapport à la liste des mots de passe du NCSC.

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

Trouvez tous les groupes de sécurité

Listez tous les groupes de sécurité dans Active Directory avec PowerShell en limitant votre requête de recherche aux seuls groupes de sécurité avec ces deux exemples. Vous vous demandez quel est ce filtre LDAP ? Apprenez tout sur les filtres LDAP.

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

Trouvez les groupes de distribution

Utilisez PowerShell pour lister les groupes Active Directory (distribution) qui excluent les groupes de sécurité en utilisant ces deux exemples.

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

Trouvez l’appartenance à un groupe pour un utilisateur avec Get-ADPrincipalGroupMembership

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

Notez que cette commande nécessite un accès à un catalogue global.

Trouvez les groupes dans une OU, sans inclure les sous-OU

Utilisez le paramètre SearchBase pour limiter votre recherche à une seule OU en utilisant ces deux exemples.

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

Trouvez les groupes dans une OU, en incluant les sous-OU

Vous devez trouver tous les groupes dans les sous-OU ? Utilisez une SearchScope de SubTree.

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

Résumé

Cela conclut notre démonstration basée sur des exemples de gestion des groupes AD avec PowerShell. Essayez quelques-uns de ces exemples dans votre organisation et commencez à automatiser !

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