TUTOS.EU

Lister les membres des groupes d'un domaine AD

Comment obtenir en Vbscript la liste des groupes d'un domaine AD avec leurs membres

De base

get-adgroupmember -Identity "MonGroupe" -Recursive | select Name | sort-object -property Name
Lien vers le fichier : cliquez ici

En plus complexe

Option Explicit

Dim MyDistinguishedName
Dim objRootDSE, objItem, objConnection, objCommand, objRecordSet
Dim strContainer, strname, arrMember, strMember
Dim intCounter, Position

strContainer = "" 'Si vous souhaitez vous connecter à une OU en particulié, indiquez la ici

Const ADS_UF_ACCOUNTDISABLE = 2 
Const ADS_SCOPE_SUBTREE = 2

On Error Resume Next
Set objRootDSE = GetObject("LDAP://rootDSE")
If strContainer = "" Then
  Set objItem = GetObject("LDAP://" & objRootDSE.Get("defaultNamingContext"))
Else
  Set objItem = GetObject("LDAP://" & strContainer & "," & _
    objRootDSE.Get("defaultNamingContext"))
End If
On Error Goto 0

'strname = objItem.Get("name")
'WScript.Echo "name: " & strname

MyDistinguishedName = objItem.Get("distinguishedName") 'Récupération du distinguishedName du domaine par défaut. Exemple DC=Cotonso,DC=Com
'WScript.Echo "distinguishedName: " & MyDistinguishedName

Set objConnection = CreateObject("ADODB.Connection") 
objConnection.Open "Provider=ADsDSOObject;" 
Set objCommand = CreateObject("ADODB.Command") 
objCommand.ActiveConnection = objConnection 
objCommand.CommandText = "<LDAP://" & MyDistinguishedName & ">;(objectCategory=Group);name,cn,displayName,sAMAccountName,distinguishedName,member;subtree"


objCommand.Properties("Page Size") = 10000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False

Set objRecordSet = objCommand.Execute 
intCounter = 0 
Do Until objRecordset.EOF 
	'WScript.echo objRecordset.Fields("distinguishedName")
	WScript.echo "Name : " & VbTab & objRecordset.Fields("Name")
	WScript.echo VbTab & "cn : " & VbTab & objRecordset.Fields("cn")
	WScript.echo VbTab & "displayName : " & VbTab & objRecordset.Fields("displayName")
	WScript.echo VbTab & "sAMAccountName : " & VbTab & objRecordset.Fields("sAMAccountName")
	WScript.echo VbTab & "distinguishedName : " & VbTab & objRecordset.Fields("distinguishedName")
	'WScript.echo VbTab & "member : " & VbTab & objRecordset.Fields("member")
	
	arrMember = objRecordSet.Fields("member")
	If IsArray(arrMember) Then
		For each strMember in arrMember
			'WScript.echo VbTab & VbTab & strMember
			'C'est normalement le distinguishedName qui est affiché quand on affiche la valeur de strMember
			'Le code ci-dessous effectue une mise en forme en éliminant ce qui est après le premier signe égal et avant la première virgule.
			Position = Instr(strMember,",")
			If Position > 0 Then strMember = Left(strMember, Position-1)
			Position = Instr(strMember,"=")
			If Position > 0 Then strMember = Mid(strMember,Position+1)
			WScript.echo VbTab & VbTab & strMember
		Next
	Else
		WScript.echo VbTab & VbTab & "No users in group named " & objRecordset.Fields("Name")
	End If
	
	objRecordset.MoveNext 
Loop 
objConnection.Close
Lien vers le fichier : cliquez ici

Article(s) en relation(s)