This function compares the members of one group with the members of another. The comparison can be performed on objects that inherit from this group with the recursive mode

  This function used the get-adgroupmember command result in recursive mode or not.   

   It returns a table indicating the LDAP name of the objects as well as whether they are members of one or both groups.        It requires the ActiveDirectory PowerShell module   

No recursive mode :

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

UserDn   : CN=SG-Service-Informatique,OU=Securite_global,OU=Groupes,DC=htrab,DC=lan

MemberOf : OnlyFirst


UserDn   : CN=Philippe BARTH,OU=Utilisateurs,DC=htrab,DC=lan

MemberOf : OnlySecond


UserDn   : CN=Pierre Durand,OU=Utilisateurs,DC=htrab,DC=lanMemberOf : OnlySecond


Same group in recursive mode :

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


UserDn   : CN=Patrick Dupond,OU=Utilisateurs,DC=htrab,DC=lan   

MemberOf : OnlyFirst


UserDn   : CN=Philippe BARTH,OU=Utilisateurs,DC=htrab,DC=lan   

MemberOf : Both


UserDn   : CN=Pierre Durand,OU=Utilisateurs,DC=htrab,DC=lan   

MemberOf : OnlySecond


This example give the inherited member of the both group 

.\Compare-ADGroup.ps1 -FirstGroup "SDL-CT-Partage-Info" -SecondGroup "SG-Service-Technique" -Recursive $True | Where { $_.memberof -eq "Both" }

UserDn                               MemberOf                                        

CN=Philippe BARTH,OU=Utilisateurs,DC=htrab,DC=lan Both