Platform SDK: Active Directory, ADSI, and Directory Services

The GetEx Method

Some properties are returned with multiple values, that is, they can contain one or more values. For instance, a list of descriptions on a domain is a property with multiple values. You can retrieve a property with multiple values as an array using the IADs::GetEx function.

IADs::GetEx gets properties with single or multiple values in VARIANT structures from the property cache. Finding no value in the cache invokes an implicit IADs::GetInfoEx.

Dim obj As IADs
Dim objList As Variant
 
Set obj = GetObject("LDAP://MyMachine/CN=Administrator,CN=Users,DC=Microsoft,DC=com")
 
objList = obj.GetEx("description")
 
For Each Desc In objList
    ' Print the descriptions
    Debug.Print (Desc)
Next

IADs::GetEx always returns a variant array of variants regardless of the number of values returned from the server. This is true when a multiple valued attribute contains single or multiple values.

' --- Multiple valued attribute ---
Set usr = GetObject("LDAP://CN=jsmith, OU=Sales, DC=Microsoft, DC=COM")
homePhones = usr.GetEx("otherHomePhone")
For each phone in homePhones
    Debug.Print phone
Next

You can also use IADs::GetEx for an attribute with a single value.

Set usr = GetObject("LDAP://CN=jsmith, OU=Sales, DC=Microsoft, DC=COM")
sds = usr.GetEx("ntSecurityDescriptor")
For each sd in sds
    Set acl = sd.DiscretionaryACL
Next