[PowerShell AD DS] Comparer les membres de deux groupes

Dans ce nouvel article je vais vous présenter un script que j'ai mis à disposition sur les galléries Technet à l'adresse suivante :

https://gallery.technet.microsoft.com/Compare-Members-of-two-2d6d3e02

Le script permet renvoie un tableau avec le « DistinguishedName » (identifiant LDAP) de l'objet ainsi que sa présence dans le premier groupe, le second groupe ou les deux.

Il utilise la commande « Get-ADGroupMember » et nécessite le module Active Directory. Il peut comparer les membres directs des deux groupes (mode non récursif) ou les membres hérités (mode récursif).

 

Le script est compatible avec le module Active Directory de :

  • Windows Server 2008
  • Windows Server 2008 R2
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016

 

Le script nécessite le module PowerShell Active Directory. Sur un poste client vous pouvez installer les outils d'administration (RSAT). Voir :

Installer RSAT sur un poste client

 

Pour comprendre la suite nous allons définir le groupe « SDL-CT-Partage-Info » qui contient un autre groupe « SG-Service-Informatique » :

Le groupe « SG-Service-Informatique » contient 2 utilisateurs :

Nous avons un troisième groupe « SG-Service-Technique » qui contient deux utilisateurs dont « Philippe BARTH » qui est déjà membre du groupe précédent.

La première commande en mode non récursif va comparer les membres directs des deux groupes :

.\Compare-ADGroup.ps1 -FirstGroup "SDL-CT-Partage-Info" -SecondGroup "SG-Service-Technique" -Recursive $False | fl

Vous pouvez constater qu'aucun membre n'est inclus dans les deux groupes.

 

La commande suivante est identique à la première mais utilise le mode récursif :

.\Compare-ADGroup.ps1 -FirstGroup "SDL-CT-Partage-Info" -SecondGroup "SG-Service-Technique" -Recursive $True | FL

Comme vous pouvez le constater, l'utilisateur « Philippe Barth » qui est membre de « SDL-CT-Partage-Info » par héritage de « SG-Service-Informatique » et bien dans les 2 groupes. Le groupe « SG-Service-Informatique » n'apparaît pas seul ces membres font partie du résultat.

Enfin vous pouvez identifier les membres exclusifs du premier groupe, du deuxième ou juste ceux qui sont membres des deux groupes en ajoutant :

| Where { $_.memberof -eq "OnlyFirst" }

 

0u

| Where { $_.memberof -eq "OnlySecond" }

 

Ou

 

| Where { $_.memberof -eq "Both" }

 

 

 

Dans le cas d'une forêt Active Directory la commande est exécutée sur un des domaines et ne permet pas de comparer des groupes de domaines différents.

 

Tags: 

Theme: 

Systeme: 

Annee: