Поделиться через


Метод 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 возвращает ошибку "Свойство не найдено в кэше".