Метод GetEx
Некоторые атрибуты могут хранить одно или несколько значений. Например, другой атрибутTelephone объекта пользователя в Active Directory — это свойство, которое может иметь ноль, одно или несколько значений. Атрибуты, имеющие несколько значений, называются "многозначными атрибутами". Если метод IADs::Get используется для получения многозначного атрибута, результаты должны обрабатываться иначе, чем если атрибут имеет одно значение. Результаты, предоставляемые методом IADs::GetEx , обрабатываются одинаково, независимо от того, имеет ли атрибут один или несколько значений. В обоих случаях метод IADs::GetEx возвращает значения в массиве.
Метод IADs::GetEx извлекает свойства из кэша свойств. Если указанное свойство не найдено в кэше, IADs::GetEx выполняет неявный вызов IADs::GetInfo .
Метод IADs::GetEx возвращает массив вариантов вариантов независимо от количества значений, возвращаемых сервером. Это верно, даже если атрибут содержит только одно значение.
Dim usr As IADs
On Error GoTo Cleanup
Set usr = GetObject("LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
homePhones = usr.GetEx("otherHomePhone")
For each phone in homePhones
Debug.Print phone
Next
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
Метод IADs::GetEx также можно использовать для однозначных атрибутов. Результаты однозначного атрибута обрабатываются так же, как результаты для многозначного атрибута.
Dim usr as IADs
On Error GoTo Cleanup
Set usr = GetObject("LDAP://CN=Jeff Smith,CN=Users,DC=fabrikam,DC=com")
sds = usr.GetEx("ntSecurityDescriptor")
For each sd in sds
Set acl = sd.DiscretionaryACL
Next
Cleanup:
If (Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set usr = Nothing
Если для атрибута не задано значение, IADs::GetEx возвращает ошибку "Свойство не найдено в кэше".