A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using the PowerShell Get-ADGroupMember
cmdlet and other cmdlets can save you a ton of time.
Les groupes Active Directory sont un excellent moyen de segmenter les comptes d’utilisateurs. Les groupes permettent aux administrateurs de définir l’accès aux ressources sur de nombreux systèmes.
Dans cet article, utilisons PowerShell pour obtenir les membres du groupe AD et exporter les membres du groupe AD. Vous pouvez ensuite utiliser ces informations pour générer de nombreux rapports intéressants.

Gérez et rapportez-vous sur Active Directory, Exchange et Microsoft 365 avec ManageEngine ADManager Plus. Téléchargez l’essai gratuit !
Prérequis
Si vous souhaitez suivre cet article, assurez-vous d’avoir les exigences suivantes prêtes:
- Travaillez sur un ordinateur Windows 10, rejoint au domaine
- Connecté avec un utilisateur pouvant lire les comptes de groupe AD et d’utilisateurs
- Avoir le module PowerShell Active Directory installé
Apprendre les bases
Pour interroger les groupes AD et les membres du groupe, vous disposez de deux cmdlets PowerShell – Get-AdGroup
et Get-AdGroupMember
.
Get-ADGroup
interroge un contrôleur de domaine et renvoie des objets de groupe AD. Get-AdGroupMember
examine l’intérieur de chaque groupe et renvoie tous les comptes d’utilisateurs, groupes, contacts et autres objets présents dans ce groupe.
Obtention de groupes AD
Pour trouver des groupes AD avec PowerShell, vous pouvez utiliser la cmdlet Get-ADGroup
. Sans paramètres, Get-ADGroup
interrogera AD et renverra tous les groupes dans un domaine en utilisant le paramètre Filtre
. Le paramètre Filtre
est requis. Il existe pour limiter les groupes renvoyés en fonction de divers critères.
Par exemple, pour trouver tous les groupes sans tenir compte de critères particuliers, utilisez Get-ADGroup
et spécifiez un joker (astérisque) pour le paramètre Filtre
. Vous pouvez voir un exemple ci-dessous. Parcourir tous ces groupes peut prendre du temps si vous en avez des centaines, voire des milliers dans votre domaine.
Si vous avez besoin de trouver un seul groupe, vous pouvez utiliser le paramètre Identité
.
Le paramètre Identité
est un paramètre commun à toutes les cmdlets PowerShell Active Directory. Il vous permet de limiter votre requête à un seul objet AD. Par exemple, si vous deviez vérifier si un groupe appelé HR existe, vous pourriez le découvrir en exécutant la commande ci-dessous.
Obtention des membres du groupe AD avec Get-AdGroupMember
Utiliser PowerShell pour répertorier les membres du groupe AD nécessite la commande Get-ADGroupMember
. Cette commande obtient des objets utilisateur, groupe et ordinateur dans un groupe particulier. Peut-être avez-vous besoin de trouver tous les membres du groupe Administrateurs. Dans sa forme la plus simple, vous utiliseriez simplement le paramètre Identity
en spécifiant à nouveau le nom du groupe comme ci-dessous.
Notez que
Get-AdGroupMember
ne renvoie que l’appartenance à un groupe pour les utilisateurs, les groupes et les ordinateurs. Il ne renverra pas d’autres objets AD comme les contacts.
Énumérer les membres de groupe à l’intérieur des membres de groupe
Comme vous le savez peut-être, les groupes AD peuvent non seulement contenir des comptes d’utilisateur mais également d’autres groupes appelés également des groupes imbriqués. Lorsqu’un groupe est imbriqué à l’intérieur d’un autre groupe, les membres de ce groupe héritent des mêmes autorisations attribuées au groupe parent.
Par défaut, la commande PowerShell Get-AdGroupMember
ne renvoie pas les membres de groupe imbriqués. Pour remédier à cela, vous pouvez utiliser le paramètre Recursive
. Par exemple, vous pourriez trouver les membres des groupes imbriqués à l’intérieur du groupe HR en utilisant le paramètre Recursive
comme indiqué ci-dessous.
Obtenir plusieurs groupes/membres à la fois
Si vous devez interroger AD pour de nombreux groupes ou membres de groupe différents en une seule fois, vous pouvez également le faire en utilisant une boucle PowerShell foreach. Une boucle foreach exécute une commande ou du code pour chaque élément d’une collection. Dans ce cas, cette collection sera une liste de noms de groupe.
Peut-être avez-vous besoin de trouver tous les membres du groupe dans les groupes HR, Comptabilité et Informatique. Pour ce faire, vous devez d’abord créer une collection ou un tableau de ces noms de groupe. L’exemple ci-dessous définit cette collection comme $groupNames
. Ensuite, pour chaque nom dans cette collection, exécutez Get-ADGroupMember
en fournissant le nom de chaque groupe au paramètre Identity
.
Vous pouvez également utiliser le
ForEach-Object
cmdlet pour parcourir les groupes.
Utilisation de références d’identification alternatives
Comme de nombreux autres cmdlets PowerShell, les cmdlets de groupe AD ont un paramètre Credential
. Par défaut, chaque fois que vous exécutez un cmdlet de groupe AD, il utilise vos informations d’identification connectées pour interroger Active Directory. Ce comportement implique que vous devez être sur un ordinateur joint au domaine connecté en tant qu’utilisateur Active Directory disposant d’autorisations.
Mais que se passe-t-il si vous êtes sur un ordinateur de groupe de travail ou si vous devez vous authentifier sur AD en tant qu’utilisateur différent ? Dans ce cas, vous pouvez utiliser le paramètre Credential
. Ce paramètre vous permet de spécifier un nom d’utilisateur et un mot de passe à utiliser pour l’authentification.
Par exemple, peut-être que votre compte utilisateur n’a pas les droits nécessaires pour effectuer une tâche AD. Vous avez un compte de service avec des droits supplémentaires. Vous pouvez être connecté en tant qu’utilisateur standard tout en vous authentifiant avec le compte de service comme indiqué ci-dessous.
La cmdlet Get-Credential
vous demande un nom d’utilisateur/mot de passe pour créer une identification. Cette identification est ensuite transmise à la cmdlet Get-AdGroup
pour l’authentification.
Le paramètre
Credential
est omniprésent dans PowerShell pour fournir des informations d’authentification. Pour plus d’informations, consultez Utilisation de la cmdlet PowerShell Get-Credential et tout ce qui concerne les informations d’identification.
Obtenir les membres d’un groupe avec Get-ADGroup?
Cela peut sembler contre-intuitif, mais vous pouvez également obtenir les membres d’un groupe avec la cmdlet Get-ADGroup
.
Il s’avère que Get-ADGroup
renvoie une propriété pour chaque groupe appelée members
. Il s’agit d’une collection d’objets AD qui sont membres d’un groupe.
Par exemple, pour trouver les membres du groupe HR sans utiliser Get-ADGroupMember
, vous pourriez faire quelque chose comme ceci :
Pourquoi utiliser cette méthode plutôt que l’autre? La principale différence est que les propriétés members
contiennent tous types d’objets AD – pas seulement des utilisateurs, des ordinateurs et d’autres groupes.
Peut-être avez-vous des contacts au sein de divers groupes. Lorsque vous exécutez Get-ADGroupMember
, ces contacts ne s’afficheraient pas. Mais si vous indiquez à Get-ADGroup
de retourner tous les membres de ce groupe en étendant cette collection comme indiqué ci-dessous, vous verrez les contacts.
Recherche d’attributs AD spécifiques
Dans la section des bases ci-dessus, vous renvoyiez simplement tous les groupes et les membres du groupe. Les informations renvoyées pour chaque groupe et membre du groupe ne sont qu’un sous-ensemble des attributs AD associés à chaque type d’objet.
Peut-être souhaitez-vous voir l’adresse e-mail d’un compte utilisateur, la date de la dernière connexion ou un autre attribut AD associé? Pour cela, vous devrez faire preuve de créativité.
Peut-être avez-vous pu trouver tous les membres du groupe HR mais devez également voir l’adresse e-mail de chaque compte utilisateur?
Filtrage des résultats
Jusqu’à présent, vous avez trouvé tous les groupes et membres du groupe, mais dans un environnement de travail quotidien, vous aurez rarement besoin de le faire. Il est probable que vous devrez seulement trouver un nombre limité de chaque élément. Les cmdlets du groupe AD offrent quelques façons de gérer cela.
Le paramètre Filter
Comme mentionné précédemment, les deux cmdlets ont le paramètre Filter
. Ce paramètre vous permet de limiter ce qui est renvoyé de nombreuses manières différentes en dehors du champ d’application de cet article.
En utilisant le paramètre Filter
, vous pouvez limiter les résultats par n’importe quel attribut AD tel que le nom, le type de groupe, l’adresse e-mail, la dernière connexion pour les utilisateurs, etc.
Par exemple, peut-être que vous souhaitez trouver uniquement des groupes de sécurité. Dans ce cas, vous spécifieriez un attribut GroupCategory
et définiriez une condition pour vous assurer que seuls les groupes Sécurité
sont renvoyés.
Peut-être que vous souhaitez trouver tous les groupes de sécurité, mais ils ne doivent pas être des groupes locaux de domaine. Vous ajouterez alors une autre condition (cette fois en utilisant l’opérateur -ne
) pour éviter que des groupes locaux de domaine ne soient renvoyés.
Si vous souhaitez apprendre à créer des filtres de requête, assurez-vous de consulter Apprendre Active Directory et les filtres LDAP en PowerShell.
Limitation des résultats de groupe par unité organisationnelle (OU)
Peut-être que vous avez divers groupes imbriqués dans des OUs. Vous ne voulez pas nécessairement trouver tous les groupes, mais seulement ceux d’une OU spécifique. Dans ce cas, vous pouvez utiliser le paramètre SearchBase
.
Le paramètre SearchBase
vous permet de spécifier le nom distinctif (DN) d’une OU pour commencer à rechercher des groupes. Par exemple, peut-être avez-vous une OU appelée Locations à la racine de votre domaine. Dans la OU Locations, vous avez créé chaque OU de lieu telle que Austin, NYC, et Los Angeles. Vous recherchez uniquement des groupes dans la OU NYC et devez restreindre la visualisation des autres.
Une structure d’OU AD exemple est présentée ci-dessous. Remarquez que d’autres groupes existent en dehors des OUs Locations.
Peut-être devez-vous trouver tous les groupes AD qui se trouvent uniquement dans l’OU NYC. Pour limiter la requête, vous utiliseriez le paramètre SearchBase
en fournissant le DN comme indiqué ci-dessous. Tous les groupes à l’intérieur de l’OU Locations sont renvoyés.
Mais maintenant, vous devez trouver tous les groupes dans toutes les OUs sous l’OU Locations. Get-ADGroup
renvoie uniquement les groupes dans l’OU Locations elle-même, pas dans les OUs enfants.
Pour renvoyer les groupes à l’intérieur des OUs enfants, vous devriez utiliser le paramètre SearchScope
. Ce paramètre est similaire au paramètre Recursive
dans la mesure où il inspectera également les objets enfants.
Par exemple, pour trouver tous les groupes dans n’importe quelle OU sous l’OU Locations, spécifiez Subtree
ou 2
. Cette valeur pour SearchScope
indique à Get-ADGroup
d’examiner de manière récursive tous les enfants, petits-enfants et ainsi de suite dans les OUs.
Pour une explication complète des options du paramètre SearchScope
, consultez la documentation de Get-ADGroup
.
Exportation des groupes AD et des membres
Vous savez enfin comment interroger et renvoyer les groupes et les membres de groupe dont vous avez besoin. Toutes ces informations sont envoyées à la console PowerShell. Mais maintenant, vous devez obtenir ces informations dans un fichier CSV ou une feuille de calcul Excel.
La seule chose que vous devez faire maintenant est d’envoyer toutes ces informations vers un fichier.
Exportation vers un fichier CSV
Un format populaire pour exporter des informations AD est un CSV. PowerShell dispose d’une cmdlet pratique qui vous permet de créer facilement des fichiers CSV à partir de la sortie PowerShell appelée Export-Csv
.
Vous pouvez créer un fichier CSV à partir de n’importe quelle commande couverte dans cet article en la redirigeant vers Export-Csv
. En utilisant l’exemple ci-dessous, toutes les sorties que Get-AdGroup
aurait renvoyées à la console seront redirigées vers un fichier CSV.
Pour plus d’informations sur cette commande pratique, consultez Export-Csv : La manière PowerShell de traiter les fichiers CSV comme des citoyens de première classe.
Vous pouvez également exporter facilement des résultats au format CSV via la commande Get-AdGroupMember
.
Exportation vers Excel
PowerShell n’a pas de moyen natif d’exporter des informations vers Excel. Mais vous pouvez toujours télécharger le module communautaire gratuit appelé ImportExcel. Ce module apporte des capacités d’exportation similaires à CSV directement dans les feuilles de calcul Excel. Pour installer le module PowerShell, exécutez Install-Module ImportExcel -Scope CurrentUser
.
En utilisant l’exemple ci-dessus, au lieu d’un fichier CSV, si vous avez besoin d’exporter les groupes vers une feuille de calcul Excel, vous utiliserez la commande Export-Excel
comme indiqué ci-dessous.
Recherchez les mots de passe divulgués et non sécurisés dans votre Active Directory en les comparant à la liste de mots de passe de la NCSC.
Le module ImportExcel offre une multitude de fonctionnalités pour travailler avec Excel. Si vous avez besoin d’une feuille de calcul plus élaborée, il a probablement une fonction pour vous.
Pour plus d’informations sur l’utilisation du module ImportExcel, lisez cet article. Il offre une excellente introduction à quelques cas d’utilisation courants qu’il peut gérer.
Gérez et rapportez sur Active Directory, Exchange et Microsoft 365 avec ManageEngine ADManager Plus. Téléchargez l’essai gratuit!
Conclusion
En utilisant seulement deux cmdlets PowerShell, vous pouvez faire presque tout avec les groupes AD. Cet article n’était qu’une introduction à la fonctionnalité qui vous est disponible. Utilisez les connaissances acquises ici, suivez certains des liens pour approfondir les sujets dans l’article et découvrez ce que vous pouvez construire !