Enumerate ActiveDirectory Group Members

This simple VBS script binds to a AD group and enumerates it’s members:

Option Explicit
Dim strMember, strDNSDomain, strContainer
Dim objGroup, objRootDSE
Dim arrMemberOf, strList, arrGroup

' Bind to Active Directory'
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")

' Bind to a group Object
' -- By ldap path
'strContainer = "cn=users,cn=Builtin, "
'Set objGroup = GetObject ("LDAP://"& strContainer & strDNSDomain) '
' -- By object SID
'Set objGroup = GetObject ("LDAP://<sid=s-1-5-21-4270008391-1092995833-463569060-1030>") ' KO_HANLOWIEC
Set objGroup = GetObject ("LDAP://<sid=s-1-5-21-4001076487-2384990073-809918020-1728>") ' Employees

objGroup.getInfo

arrMemberOf = objGroup.GetEx("member")

' Loop = For Each .... Next
WScript.Echo "Members of Group: " & objGroup.Get("name") & vbCRLF
   For Each strMember in arrMemberOf
      strMember = Mid(strMember, 4, 330)
      arrGroup = Split(strMember, "," )
      strList = strList & arrGroup(0) & vbCRLF
   Next

Wscript.Echo objGroup.Get("cn") & " contains " & vbCRLF & strList & vbCRLF

Wscript.Quit

2 Comments

  1. W ogólności lepiej bindować się do GUID albo DN – znaczy się czytelniej. Ten skrypt oczywiście wylistuje członkostwo w grupie ale bez członków:
    – wynikających z zagnieżdzenia
    – którzy mają tą grupę ustawioną jako primary group.

    takie moje .02PLN

Dodaj komentarz