Get-ADGroup : syntaxe, exemples et filtres PowerShell essentiels 🔍

Administrateur consultant des groupes Active Directory avec la commande Get-ADGroup dans PowerShell.

Get-ADGroup est une cmdlet PowerShell Active Directory qui récupère un ou plusieurs objets groupe depuis l’annuaire. Elle permet de rechercher un groupe précis avec -Identity, de lister l’ensemble des groupes avec -Filter *, ou de cibler une unité d’organisation avec -SearchBase. Voici la syntaxe, les paramètres essentiels, des exemples directement exploitables, ainsi que les différences avec Get-ADGroupMember et Get-ADPrincipalGroupMembership.

Rôle de Get-ADGroup et prérequis

Get-ADGroup fait partie du module ActiveDirectory pour PowerShell, installé avec les outils d’administration de serveur distant (RSAT) ou disponible nativement sur un contrôleur de domaine. Cette cmdlet retourne des objets groupe Active Directory, avec leurs propriétés de base comme le nom, le SID ou le distinguished name, sans afficher leurs membres. Avant toute utilisation, le module doit être chargé :

Import-Module ActiveDirectory

Sur un poste équipé du module, l’import est généralement automatique dès la première commande utilisée. En cas d’erreur indiquant que le terme n’est pas reconnu, cet import manuel résout la majorité des cas.

Sur un poste de travail qui n’est pas un contrôleur de domaine, le module ActiveDirectory doit d’abord être installé via les fonctionnalités RSAT (Remote Server Administration Tools), disponibles sous Windows Server via le gestionnaire de serveur, ou sous Windows 10/11 via les fonctionnalités à la demande. Une fois installé, le module reste disponible sur le poste sans nécessiter de nouvelle installation à chaque session, seul l’import via Import-Module ActiveDirectory étant parfois requis selon la configuration du profil PowerShell.

Syntaxe minimale de Get-ADGroup

La forme la plus simple pour rechercher un groupe Active Directory précis repose sur le paramètre -Identity :

Get-ADGroup -Identity "GRP-Comptabilite"

Ce paramètre accepte le nom du groupe, son SID, son GUID ou son distinguished name complet. Il constitue la méthode la plus directe lorsque l’identifiant exact du groupe est déjà connu.

Lister tous les groupes Active Directory

Pour afficher l’ensemble des groupes présents dans l’annuaire, le paramètre -Filter avec un caractère générique suffit :

Get-ADGroup -Filter *

Sur un annuaire volumineux, cette commande retourne rapidement un grand nombre d’objets. Il est recommandé de la combiner avec Select-Object pour limiter l’affichage aux propriétés utiles :

Get-ADGroup -Filter * | Select-Object Name, GroupCategory, GroupScope

Filtrer les groupes AD par nom avec -Filter

Le paramètre -Filter accepte une syntaxe proche de PowerShell, ce qui permet de filtrer les groupes AD directement côté serveur, sans rapatrier inutilement l’ensemble de l’annuaire :

Get-ADGroup -Filter 'Name -like "GRP-*"'

Cette approche est nettement préférable à un filtrage avec Where-Object appliqué après coup, car ce dernier oblige le serveur Active Directory à transmettre tous les objets avant que PowerShell ne les trie localement. Filtrer directement avec -Filter réduit la charge réseau et accélère l’exécution, surtout sur un grand nombre de groupes.

Lire aussi :  Exchange SE : ce que change Exchange Server Subscription Edition 📧

Il reste possible de combiner les deux approches lorsque le critère recherché ne correspond à aucun attribut directement interrogeable via -Filter, par exemple pour appliquer une logique conditionnelle plus complexe sur les résultats déjà récupérés. Dans ce cas, il est recommandé de filtrer d’abord le plus largement possible côté serveur, puis d’affiner uniquement en local sur un ensemble déjà réduit :

Get-ADGroup -Filter 'Name -like "GRP-*"' -Properties Description |
    Where-Object { $_.Description -match "Finance" }

Filtrer par catégorie ou étendue de groupe

Les propriétés GroupCategory et GroupScope permettent d’affiner la recherche selon le type de groupe recherché :

Get-ADGroup -Filter 'GroupCategory -eq "Security" -and GroupScope -eq "Global"'

Cette commande cible uniquement les groupes de sécurité à portée globale, en excluant les groupes de distribution ou les groupes à portée universelle ou locale de domaine.

Cibler une unité d’organisation avec -SearchBase

Le paramètre -SearchBase limite la recherche à une branche précise de l’annuaire, identifiée par son distinguished name. Il est particulièrement utile lorsque les groupes recherchés se trouvent dans une unité d’organisation dédiée :

Get-ADGroup -Filter * -SearchBase "OU=Groupes,OU=IT,DC=entreprise,DC=local"

Cette combinaison évite de parcourir l’intégralité du domaine lorsque seule une portion de l’arborescence est concernée, ce qui accélère nettement la recherche sur un grand annuaire.

Récupérer des propriétés supplémentaires avec -Properties

Par défaut, Get-ADGroup ne retourne qu’un nombre limité de propriétés. Le paramètre -Properties permet d’en récupérer d’autres, comme la description ou la date de création :

Get-ADGroup -Identity "GRP-Comptabilite" -Properties Description, whenCreated, ManagedBy

Utiliser -Properties * récupère l’ensemble des attributs disponibles, ce qui est utile pour explorer un objet groupe, mais alourdit inutilement la requête si seules quelques propriétés sont réellement nécessaires en usage courant.

Certaines propriétés fréquemment demandées ne sont pas incluses par défaut, comme ManagedBy (le gestionnaire du groupe), whenCreated (date de création) ou Members (liste brute des membres sous forme de distinguished names, moins pratique que Get-ADGroupMember pour un usage courant). Préciser explicitement les propriétés attendues plutôt que d’utiliser systématiquement -Properties * reste la pratique recommandée dans un script destiné à s’exécuter régulièrement.

Utiliser LDAPFilter pour des recherches avancées

Le paramètre -LDAPFilter permet d’exprimer la recherche directement sous forme de filtre LDAP, une syntaxe plus proche du fonctionnement natif de l’annuaire :

Get-ADGroup -LDAPFilter "(name=GRP-*)"

Ce paramètre est surtout pertinent pour des requêtes complexes déjà connues sous forme LDAP, ou lorsqu’une syntaxe précise n’est pas facilement transposable avec -Filter. Pour la majorité des besoins courants, -Filter reste plus lisible et suffisant.

Lire aussi :  Ouvrir un fichier CSV avec Excel : la méthode fiable pour bien répartir les données en colonnes

Exporter les groupes Active Directory en CSV

Pour produire un export exploitable, il suffit de sélectionner les propriétés utiles avant de les transmettre à Export-Csv :

Get-ADGroup -Filter * -Properties Description |
    Select-Object Name, GroupCategory, GroupScope, Description |
    Export-Csv -Path "C:\Export\groupes_ad.csv" -NoTypeInformation -Encoding UTF8

L’option -NoTypeInformation évite l’ajout d’une ligne d’en-tête technique inutile dans le fichier, tandis que -Encoding UTF8 garantit un affichage correct des caractères accentués à l’ouverture du fichier CSV.

Pour un export limité à une seule unité d’organisation, il suffit d’ajouter -SearchBase à la commande précédente. Ce type d’export est couramment utilisé pour produire un inventaire des groupes Active Directory à destination d’un audit, d’une revue des droits ou d’une documentation d’infrastructure.

Get-ADGroup, Get-ADGroupMember et Get-ADPrincipalGroupMembership

Ces trois cmdlets sont souvent confondues alors qu’elles répondent à des questions différentes.

CmdletCe qu’elle retourneExemple d’usage
Get-ADGroupLes propriétés du groupe lui-mêmeRechercher ou lister des groupes
Get-ADGroupMemberLes membres appartenant à un groupe donnéLister les utilisateurs d’un groupe
Get-ADPrincipalGroupMembershipLes groupes auxquels appartient un utilisateur ou un objetSavoir dans quels groupes se trouve un compte

Get-ADGroup ne renvoie jamais la liste des membres : pour cela, Get-ADGroupMember -Identity "GRP-Comptabilite" est nécessaire. À l’inverse, pour connaître les groupes Active Directory auxquels appartient un utilisateur précis, Get-ADPrincipalGroupMembership -Identity "jdupont" est la commande adaptée.

Erreurs fréquentes avec Get-ADGroup

Plusieurs erreurs reviennent régulièrement lors de l’utilisation de cette cmdlet :

  • Module ActiveDirectory absent : la commande échoue si RSAT n’est pas installé ou si le module n’a pas été importé sur un poste qui n’est pas un contrôleur de domaine.
  • Groupe introuvable : une erreur de frappe dans le nom transmis à -Identity, ou une recherche limitée par un -SearchBase mal ciblé, empêche PowerShell Active Directory de localiser l’objet.
  • Syntaxe de filtre incorrecte : le paramètre -Filter attend une syntaxe entre guillemets simples, avec des opérateurs comme -eq ou -like ; une syntaxe LDAP directement passée dans -Filter provoque une erreur.
  • Droits insuffisants : un compte sans autorisation de lecture sur certaines unités d’organisation peut obtenir des résultats incomplets sans message d’erreur explicite, ce qui peut fausser silencieusement un export.
  • Confusion entre -Filter et -LDAPFilter : mélanger la syntaxe des deux paramètres dans une même commande, ou tenter d’utiliser une syntaxe LDAP entre guillemets simples avec -Filter, génère une erreur de syntaxe difficile à diagnostiquer pour un utilisateur peu familier des deux formats.

Bonnes pratiques pour interroger les groupes Active Directory

Filtrer directement côté serveur avec -Filter ou -SearchBase, plutôt que de rapatrier l’ensemble des groupes AD pour les trier ensuite en local, reste la pratique la plus efficace sur un grand annuaire. Limiter les propriétés demandées avec -Properties aux seuls attributs réellement nécessaires réduit également le temps de réponse des scripts d’administration s’exécutant régulièrement, notamment dans le cadre d’exports automatisés ou de tâches planifiées.

Documenter clairement, au sein même des scripts, quelle cmdlet est utilisée pour quel besoin facilite aussi la maintenance sur la durée : Get-ADGroup pour identifier ou lister des groupes, Get-ADGroupMember pour en connaître le contenu, et Get-ADPrincipalGroupMembership pour remonter les appartenances d’un compte donné. Cette distinction, une fois assimilée, évite la plupart des confusions rencontrées par les administrateurs découvrant le module PowerShell Active Directory.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *