PowerShell : récupérer récursivement tous les utilisateurs d’un groupe Active Directory

Dans ce tutoriel, nous allons voir comment récupérer de façon récursive tous les utilisateurs d’un groupe Active Directory .

C’est un cas que l’on retrouve souvent dans les annuaires Active Directory qui existent depuis plusieurs dizaines d’années : l’imbrication de groupes dans d’autres groupes . Bien que cette organisation soit pratique pour appliquer rapidement des droits ou déléguer des accès, elle devient, au fil du temps, de plus en plus difficile à maintenir et à comprendre.

Cette complexité pose notamment problème lors des revues de droits : savoir précisément qui accède à quoi, identifier les utilisateurs réellement membres d’un groupe ou encore effectuer une modification sans risquer de casser une chaîne de droits existante.

Pendant longtemps, on s’est peu préoccupé de cette problématique. Les environnements Active Directory étaient souvent construits au fil des besoins, avec une gouvernance parfois limitée, voire inexistante.

En 2026, les choses ont changé. Avec les enjeux de cybersécurité, de gouvernance des accès et de principe du moindre privilège, il devient important de savoir précisément comment sont organisés les groupes et qui bénéficie réellement des droits qu’ils permettent d’obtenir.

Dans cet article, je vais vous présenter deux snippets PowerShell qui vont vous aider à remettre de l’ordre dans vos groupes Active Directory :

  • récupérer récursivement tous les utilisateurs appartenant à un groupe, y compris ceux présents dans des groupes imbriqués ;
  • transformer cette appartenance récursive en membres directs du groupe, afin de pouvoir progressivement simplifier une structure de groupes devenue trop complexe.

Pour commencer, pour afficher tous les membres utilisateurs d’un groupe de façon récursive :

Get-ADGroupMember -Identity "NomDuGroupe" -Recursive | 
    Where-Object {$_.objectClass -eq "user"} | 
    Select-Object Name, SamAccountName, UserPrincipalName

Cette première étape va vous permettre de comparer les utilisateurs qui sont membres directes et les membres qui sont imbriqués.

Le second script va vous permettre d’ajouter les utilisateurs qui sont membres des autres groupes :

# 1. Spécifiez le nom du groupe cible
$NomDuGroupe = "NomDuGroupe"

# 2. Récupérer tous les utilisateurs récursifs (en excluant les ordinateurs)
$Utilisateurs = Get-ADGroupMember -Identity $NomDuGroupe -Recursive | 
    Where-Object { $_.objectClass -eq "user" }

# 3. Ajouter directement ces utilisateurs au groupe principal
# (Add-ADGroupMember ignore automatiquement les utilisateurs qui sont déjà membres directs)
Add-ADGroupMember -Identity $NomDuGroupe -Members $Utilisateurs

Write-Host "$($Utilisateurs.Count) utilisateurs ont été ajoutés directement au groupe '$NomDuGroupe'." -ForegroundColor Green

Et pour finir, supprimer les groupes imbriqués :

# Identifier et supprimer les sous-groupes directement contenus dans le groupe principal
$SousGroupes = Get-ADGroupMember -Identity $NomDuGroupe | 
    Where-Object { $_.objectClass -eq "group" }

if ($SousGroupes) {
    Remove-ADGroupMember -Identity $NomDuGroupe -Members $SousGroupes -Confirm:$false
    Write-Host "Les sous-groupes imbriqués ont été retirés du groupe principal." -ForegroundColor Yellow
}

L’imbrication des groupes Active Directory est loin d’être un problème rare, notamment dans les environnements qui ont évolué pendant plusieurs années sans véritable remise à plat de la gestion des droits.

Avec Get-ADGroupMember -Recursive, PowerShell permet facilement de retrouver les utilisateurs réellement concernés par un groupe, même lorsque plusieurs niveaux de groupes sont imbriqués. C’est un outil particulièrement intéressant pour réaliser des audits et des revues de droits.

Dans certains cas, il peut également être pertinent d’aller plus loin et de remettre à plat les groupes existants en ajoutant directement les utilisateurs au groupe cible, puis en supprimant progressivement les groupes imbriqués devenus inutiles.

Attention toutefois : cette dernière opération doit être réalisée avec précaution. Les groupes imbriqués peuvent être utilisés à plusieurs endroits dans l’annuaire et avoir été mis en place volontairement pour répondre à une logique de délégation ou de gestion des droits. Avant toute modification, il est donc recommandé d’identifier les dépendances et de conserver une trace de la configuration initiale.

Ces quelques commandes PowerShell peuvent néanmoins constituer une bonne première étape pour reprendre le contrôle d’un Active Directory vieillissant et simplifier progressivement sa gestion des droits.

Romain Drouche

Romain Drouche

Architecte Système | MCSE: Core Infrastructure

Expert en infrastructures IT avec plus de 15 ans d'expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d'Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.

GHinM▶