April 22, 2011, noon
posted by sensei
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!" Else WScript.Echo "Is NOT a Member!" End If
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. Figure shows the two methods IADsMembers support.
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 Next
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 Next