21.8 Evaluating Group Membership

The IADsGroup::IsMember method takes one argument, the DN of the object to check, just as Add and Remove do. It returns a Boolean, i.e., true or false. That allows you to use it in an If . . . Then statement like this:

Set objGroup = GetObject("LDAP://cn=Managers,ou=Sales," _
  & "dc=mycorp,dc=com")
If objGroup.IsMember("LDAP://cn=Vicky Launders,ou=Sales," _
  & "dc=mycorp,dc=com") Then
    WScript.Echo "Is a Member!"
    WScript.Echo "Is NOT a Member!"
End If

This should seem fairly straightforward after the examples we've already gone through. Two of the lines in the previous code snippet are too long to fit on the page, so the VBScript underscore (_) character was used again to tell VBScript that it should treat the current line as continuous with the next line. However, when you use the underscore to separate long strings, you must enclose both strings in quotation marks and then use the ampersand character (&) to concatenate two strings together.

To get a list of members in a group, the IADsGroup::Members method can be used. The IADsGroup::Members function is different from the other IADsGroup methods we have shown so far, since it returns a pointer to an IADsMembers object. Table 21-5 shows the two methods IADsMembers support.

Table 21-5. The IADsMembers interface

IADsMembers methods



The number of items in the container. If there is a filter set, only the number of items that match the filter are returned.


A filter, consisting of an array of object class strings, which can restrict the number of objects returned during enumeration of the container.

There are a number of ways of enumerating the members of a group. The For Each . . . In . . . Next loop is the most common. This is how it works:

Set objGroup = GetObject("LDAP://cn=Managers,ou=Sales," _
  & "dc=mycorp,dc=com")
WScript.Echo "Number of members of the group: " & objGroup.Members.Count
For Each objMember In objGroup.Members
  WScript.Echo objMember.Name

This script displays the number of members and then prints each member's name. As the For loop executes, objMember ends up holding an IADs object representing each member of the group.

Another useful feature of IADsMembers is the Filter method. It can be used to filter certain object classes during enumeration just like you can with containers. To view only the members of a group that are users, you would modify the previous example to do the following:

objMembers = objGroup.Members
objMembers.Filter = Array("User")
For Each objMember In objMembers
  WScript.Echo objMember.Name

    Part II: Designing an Active Directory Infrastructure
    Part III: Scripting Active Directory with ADSI, ADO, and WMI