Active Directory : comment identifier les groupes vides ?

I. Présentation

Lorsque l'on requête un annuaire Active Directory, notamment lorsqu'il s'agit de faire du tri, ou dans le cadre d'un audit, on peut chercher à obtenir la liste des groupes de sécurité vides. Dans cet article, je vais partager avec vous un bout de code PowerShell qui permet de récupérer la liste des groupes vides dans l'Active Directory.

Libre à vous ensuite d'exploiter cette liste, pour supprimer les groupes en question, par exemple.

II. PowerShell et Get-ADGroupMember

Le module Active Directory de PowerShell est relativement bien fourni. Il intègre un cmdlet nommé Get-ADGroupMember et qui sert à récupérer la liste des membres d'un groupe. Cela est intéressant, car ça nous permettra de récupérer de compter les membres de chaque groupe.

Ce que l'on cherche à faire : récupérer la liste de tous les groupes, et, pour chaque groupe, lister le nom de ceux qui sont vides.

Le bout de code suivant permet d'exécuter une action sur tous les groupes avec 0 membre :

Get-ADGroup -Filter * | Foreach{ 

          if($((Get-ADGroupMember -Identity $_).Count) -eq 0){
              <action à réaliser>
          }
}

Ensuite, il ne reste plus qu'à afficher le nombre du groupe dans la console, ou d'ajouter son nom dans un fichier, ce qui donne :

Get-ADGroup -Filter * | Foreach{ 

          if($((Get-ADGroupMember -Identity $_).Count) -eq 0){

                Write-Output "Groupe $_"
                Add-Content -Path "C:\Log_GroupsEmpty.log" -Value $_
          }
}

Enfin, nous pouvons aller plus loin en supprimant les groupes vides grâce à la commande Remove-ADGroup. Grâce au fichier de log, nous aurons une liste des groupes supprimés.

Pour supprimer les groupes vides de l'Active Directory, cela donne :

Get-ADGroup -Filter * | Foreach{ 

          if($((Get-ADGroupMember -Identity $_).Count) -eq 0){

                Write-Output "Groupe $_"
                Add-Content -Path "C:\Log_GroupsEmpty.log" -Value $_

                Remove-ADGroup -Identity $_ -Confirm:$false
          }
}

Voilà, à vous de jouer... Mais attention quand même avec ce type de script. Je vous recommande de l'exécuter sans la commande Remove-ADGroup dans un premier temps pour voir vérifier quelques groupes qui ressortent 🙂

Débutant avec PowerShell ? ➡? Débuter avec PowerShell

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5500.Voir tous les posts

2 thoughts on “Active Directory : comment identifier les groupes vides ?

  • sinon, on peut utiliser la propriété ‘member’ de l’objet adgroup
    la commande devient alors:
    Get-ADGroup -filter * -Properties member | Where-Object member -eq $null

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.