;======================================================================================================================= ; appel des librairies ;======================================================================================================================= #Include ;======================================================================================================================= ; déclaration des variables ;======================================================================================================================= Opt('MustDeclareVars', 1) LOCAL $arrMembres[1] LOCAL $arrExistants[1] LOCAL $strGroupe = "Administrateurs" ; on initialise les variables $arrMembres[0] = 0 $arrExistants[0] = 0 ; on appelle la fonction de recherche des membres du groupe Administrateurs _MembresduGroupe($strGroupe) ; on appelle la fonction de recherche des utilisateurs existants sur le poste _ListeExistants() _ArrayDisplay($arrMembres, "Membres du groupe " & $strGroupe) _ArrayDisplay($arrExistants, "Liste des " & $strGroupe & " existants sur ce poste") ;======================================================================================================================= ; fonction de recherche des utilisateurs appartenant au groupe concerné et existants sur le poste ;======================================================================================================================= Func _ListeExistants() LOCAL $objNetwork, $objComputer, $objUsers, $objUser LOCAL $strExistantsClasse, $strExistantsNom LOCAL $intExistants ; on récupère le nom de l'ordinateur $objNetwork = ObjCreate("WScript.Network") $objComputer = $objNetwork.ComputerName ; on récupère la liste des utilisateurs et groupes d'utilisateurs $objUsers = ObjGet("WinNT://" & $objComputer & ",computer") ; on traite les objets un par un For $objUser in $objUsers ; on récupère la classe de l'objet $strExistantsClasse = $objUser.Class ; on vérifie si l'élément est un utilisateur If $strExistantsClasse = "User" Then ; on récupère le nom de l'utilisateur $strExistantsNom = $objUser.Name ; on vérifie si l'utilisateur est membre du groupe _ArraySearch($arrMembres, $strExistantsNom, 0, 0, 0, 0, 1, 1) ; si oui, on l'ajoute au tableau des utilisateurs existants If Not @error Then ;on récupère le nombre d'utilisateurs existants $intExistants = $arrExistants[0] + 1 ; on redimensionne le tableau des utilisateurs existants ReDim $arrExistants[$intExistants + 1] ; on stocke le nom de l'utilisateur $arrExistants[$intExistants] = $objUser.Name ; on enregistre le nombre d'utilisateurs existants $arrExistants[0] = $intExistants EndIf EndIf Next EndFunc ;======================================================================================================================= ; fonction de recherche des membres d'un groupe ;======================================================================================================================= Func _MembresduGroupe($strMembres) LOCAL $objNetwork, $objComputer, $objGroup, $objUser LOCAL $intMembres ; on récupère le nom de l'ordinateur $objNetwork = ObjCreate("WScript.Network") $objComputer = $objNetwork.ComputerName ; on récupère tous les éléments du groupe $objGroup = ObjGet("WinNT://" & $objComputer & "/" & $strMembres & ",group") ; on traite les éléments un par un For $objUser in $objGroup.Members ;on récupère le nombre de membres dans le tableau $intMembres = $arrMembres[0] + 1 ; on redimensionne le tableau des membre du groupe ReDim $arrMembres[$intMembres + 1] ; on stocke le nom de l'utilisateur dans le tableau $arrMembres[$intMembres] = $objUser.Name ; on enregistre le nombre d'utilisateurs dans le tableau $arrMembres[0] = $intMembres Next EndFunc