Lister groupes et Utilisateurs dans AD [VBS] - VB/VBA/VBS - Programmation
Marsh Posté le 16-03-2006 à 11:22:01
Bon apres quelles heures de recherche et de bidouille,j'ai enfin trouvé quelque chose. Il doit y avoir mieux mais je pense que ca marche ! Pour ce que ca interesse voila le code :
' cheminLDAP indique dans quel chemin LDAP la recherche a lieu
cheminLDAP=""
' le nom de domaine est contenu dans le premier argument
nomDomaine="monDomaine.com"
'il faut decouper le nom de domaine a chaque '.'
'pour le formater de la sorte
'test.local => dc=test,dc=local
decoupe=Split(nomDomaine,"." )
for k=LBound(decoupe) To Ubound(decoupe)-1
if len(decoupe(k))>0 then
cheminLDAP=cheminLDAP + "dc=" + decoupe(k) + ","
next
if len(decoupe(Ubound(decoupe)))>0 then
cheminLDAP=cheminLDAP + "dc=" + decoupe(Ubound(decoupe))
Const ADS_SCOPE_SUBTREE = 2
'l'interogation de AD se fait par ADODB
'obtenir un objet connexion ADODB
Set objConnection = CreateObject("ADODB.Connection" )
'cree un objet command qui va permetre de faire une requete
Set objCommand = CreateObject("ADODB.Command" )
'parametrage de la connexion
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size" ) = 5000
'indique que la recherche a lieu dans tout le sous arbre du domaine
objCommand.Properties("Searchscope" ) = ADS_SCOPE_SUBTREE
' La requete LDAP
On error resume next
'objectCategory=user pour lister tous les utilisateurs'
'objectCategory=user pour lister tous les groupes'
objCommand.CommandText = "SELECT * FROM 'LDAP://"+cheminLDAP+"' WHERE objectCategory='group'"
Set objRecordSet = objCommand.Execute
if Err<>0 then
Wscript.Echo ("Une erreur s'est produite, vérifier le nom de domaine" )
exit sub
end if
On error goto 0
objRecordSet.MoveFirst
'pour tous les groupes, on affiche les utilisateurs'
Do Until objRecordSet.EOF
' ...recuperer ses infos ...
set objUser = GetObject(objRecordset.Fields(0).Value)
'j'ai mis ici un filtre pour resortir que les groupes qui m'interessaient du genre
'if ((InStr(objUser.sAMAccountName,"Admin AGPM" ) <> 0)
for each membre in objUser.member
wscript.echo membre
next
'endif
objRecordSet.MoveNext
Loop
objConnection.close
Voila j'ai mis ma solution, ca peut toujours servir a quelqu'un
Marsh Posté le 13-03-2006 à 15:57:13
Salut à tous et à toutes,
je fais a nouveau appel a vos lumières pour resoudre un probleme. Voila je vous l'explique : je voudrais lister tous les groupes de mon Active Directory, et pour chaque groupe les utilisateurs qui en font partis.
Toutes les pistes seront etudiées. Je vous remerice d'avance .