Bannière

Métadonnées du document:
[ Auteur : Clockover ][ Création le : 26/03/2009 ][ Dernière modification le : 26/03/2009 ][ Version : 3.1 ]

Listing contenu des groupes dans l'AD [VBS]

Etat du script: Fonctionnel

Présentation:

Ce script VBS liste tous les membres de chacuns des groupes d'un domaine.
Lors de l'exécution, une fenêtre demande le nom du domaine à traiter et un fichier "Resultat.txt" est créé dans le dossier parent du script.
Le fichier est organisé de cette manière:
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:

-Prévoir la possibilité de lister des membres qui se trouvent hors du domaine (au lien d'afficher: "Type inconnu".

Historique:

flecheflecheVersion 0.1 (2009/03/26)
-Création du script.

Il y a 0 commentaire(s) sur ce sujet.
L'intégralité du portail est placé sous licence Creative Commons License NC v2.0 (sauf mentions contraires indiquées sur les pages et/ou documents concernés !). Version: 4.2
Ce portail répond normalement aux critères de compatibilité XHTML v1.1 et CSS v2.0 du W3C:
Valid XHTML 1.1! Valid CSS 2.0!

Page générée en 0.006 secondes