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:
Page générée en 0.006 secondes