Je suis actuellement en train d'écrire un script permettant de recenser tous les groupes d'un utilisateur, y compris les éventuels groupes contenus par d'autres groupes.
l'idée c'est de les ranger dans un array en ayant un truc du genre :
j'ai pensé à faire une fonction récursive mais j'avoue ne pas m'en sortir.
Pour le moment, j'ai a peu près ce qu'il me faut mais pas sous la bonne forme.
J'ai la liste des groupe de premier niveau ainsi que la liste des sous groupes de chaque groupe de 1er niveau, mais pas dans le même array, enfin si mais en écrasant ce qu'il y a avant, sans insérer là ou il faut.
Voila mon code.
Code : Tout sélectionner
global $MOF_grp
Global $MOF_cpt = 0
;fonction qui va chercher la liste des memberOf d'un user AD et le retourne dans un tableau $memberof
Func ADGetUserGroups(ByRef $memberof, $user = @UserName)
Local $objItem
$strHostServer = $objRootDSE.Get("dnsHostName") ; Retrieve the name of the connected DC
$objItem = ObjGet("LDAP://" & $strHostServer & "/" & $user) ; Retrieve the COM Object for the logged on user
$memberof = $objItem.GetEx("memberof")
$count = UBound($memberof)
_ArrayInsert($memberof, 0, $count)
EndFunc ;==>_ADGetUserGroups
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $MOF_GO
$MOF_user = GUICtrlRead($MOF_user_input);on lit l'entrée de l'utilisateur (à savoir quel user AD on doit aller regarder)
$MOF_user_DN = _ADSamAccountNameToFQDN($MOF_user);on met le nom donné sous la bonne forme pour AD
ADGetUserGroups($MOF_grp, $MOF_user_DN); on appel la fonction qui va bien une premiere fois
_ArrayDisplay($MOF_grp)
For $MOF_cpt=1 to $MOF_grp[0];et pour chaque ligne retournée précédement, on rappel la même fonction
ADGetUserGroups($MOF_grp[$MOF_cpt], $MOF_grp[$MOF_cpt])
_ArrayDisplay($MOF_grp[$MOF_cpt])
Next
EndSwitch
WEnd
Merci à tous par avance




