Etat du script: Fonctionnel
Présentation:
Groupe1 Membre (objet utilisateur) CN=Membre (objet groupe) Type inconnu. Info: (objet non identifiable par le script) Groupe2 [...]
Le script:
'Lister tous les groupes et leur membre.
'Version 0.1 20090326 by Clockover
'Inputbox pour renseigner le domaine sur lequel travailler
strDomain = InputBox("Entrer le nom de domaine concerné:", "Informations")
'Découpage du nom de domaine
strSplit=Split(strDomain,"." )
for k=LBound(strSplit) To Ubound(strSplit)-1
if len(strSplit(k))>0 then
strLDAP= strLDAP + "DC=" + strSplit(k) + ","
end if
next
if len(strSplit(Ubound(strSplit)))>0 then
strLDAP= strLDAP + "DC=" + strSplit(Ubound(strSplit))
end if
'Ouverture d'un objet connexion ADODB (pour requêter sur AD) puis ouverture de l'objet command
Set objConnection = CreateObject("ADODB.Connection" )
Set objCommand = CreateObject("ADODB.Command" )
'Paramètres de la connexion et de la requête
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size" ) = 5000
objCommand.Properties("Searchscope" ) = 2
objCommand.CommandText = "SELECT distinguishedName, name, member FROM 'LDAP://"+strLDAP+"' WHERE objectCategory='group'"
Set objRecordSet = objCommand.Execute
'Si erreur: popup
if Err<>0 then
Wscript.Echo ("Une erreur s'est produite. Vérifier le nom de domaine entré!" )
wscript.Quit
end if
'Ecriture du résultat dans un fichier "Resultat.txt situé dans le même dossier que le script
Const ForWriting = 2
Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile( GetPath() & "\Resultat.txt", ForWriting,true)
'Exploration des groupes retournés
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
'Ecrire le nom du groupe avec un retour à la ligne
file.write( objRecordset.Fields("name").Value & vbCr)
'Récupérer les attributs contenu dans ce groupe
set objGroup = GetObject ("LDAP://" & objRecordset.Fields("distinguishedName"))
'Exploration des attributs
For each objMember in objGroup.Members
'Si il s'agit d'un user
if(objMember.objectCategory = "CN=Person,CN=Schema,CN=Configuration," + strLDAP) then
file.write(vbTab & objMember.sAMAccountName & vbCr)
'Si il s'agit d'un groupe
elseif (objMember.objectCategory = "CN=Group,CN=Schema,CN=Configuration," + strLDAP) then
file.write(vbTab & objMember.name & vbCr)
'Sinon on connait pas
else
file.write(vbTab & "Type inconnu. Info:" & objMember.objectCategory & vbCr)
end if
Next
'Avancer d'un groupe pour la boucle
objRecordSet.MoveNext
Loop
objConnection.close
''''''''''''''FONCTION: Récupération du répertoire courant''''''''''''''
Function GetPath()
Dim strPath
strPath = WScript.ScriptFullName
GetPath = Left(strPath, InStrRev(strPath, "\"))
End Function
TODO Liste:
Historique:

Version 0.1 (2009/03/26)Page générée en 0.005 secondes