Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

15.15 ADSI. Интерфейсы IADsPropertyValue и IADSPropertyValue2

Интерфейс IADSPropertyValue в скриптах ADSI на VBScript, получение информации о значениях свойств объектов Active Directory, свойство ADsType, методы Clear(), GetObjectProperty(), PutObjectProperty()

Интерфейсы IADsPropertyValue и IADsPropertyValue2 используются непосредственно для работы со значениями свойств. Каждому объекту IADsPropertyValue соответствует конкретное значение свойства. Массив значений (то есть массив объектов IADsPropertyValue) передается при помощи свойства Values объекту IADsPropertyEntry. Пример применения объекта IADsPropertyValue для получения информации о значениях свойств может выглядеть так:

Dim propList

Dim propEntry

Dim propVal

On Error GoTo Cleanup

' Retrieve the property list.

Set propList = GetObject("LDAP://OU=HQ,DC=nwtraders1,DC=msft")

propList.GetInfo

' Retrieve a property entry. If you are certain of the property type,

' replace ADSTYPE_UNKNOWN with the actual property type.

Set propEntry = propList.GetPropertyItem("description", ADSTYPE_UNKNOWN)

' Print the property entry values.

For Each v In propEntry.Values

    Set propVal = v

    Select Case propVal.ADsType

        Case ADSTYPE_CASE_EXACT_STRING

            Wscript.Echo propVal.CaseExactString

        Case ADSTYPE_CASE_IGNORE_STRING

            Wscript.Echo propVal.CaseIgnoreString

        Case Else

            Wscript.Echo "Unable to handle a property of type: " & propVal.ADsType

    End Select

Next

Cleanup:

    If (Err.Number<>0) Then

       Wscript.Echo "An error has occurred. " & Err.Number

    End If

    Set propList = Nothing

    Set propEntry = Nothing

    Set propVal = Nothing

Отметим, что свойства этого интерфейса используются достаточно своеобразно. Для каждого атрибута Active Directory можно использовать только то свойство объекта IADsPropertyValue, которое соответствует типу данного атрибута. Попытка обращения к любому другому свойству объекта IADsPropertyValue вернет ошибку. Например, если, как в нашем примере, мы обратились к атрибуту Description объекта организационного подразделения, то для такого атрибута в Active Directory предусмотрен тип CaseIgnoreString. Поэтому единственное свойство, которое можно будет использовать для объекта IADsPropertyValue CaseIgnoreString, попытка обращения к любому другому свойству вернет ошибку. Если, например, мы обратимся к атрибуту distinguishedName, то для соответствующего объекта можно будет использовать только свойство DNString и т.п.

Ниже представлена информация о всех свойствах и методах объекта IADsPropertyValue:

  • ADsType — это свойство позволяет определить тип данных для свойства в соответствии с набором значений, предусмотренных перечислением ADSTYPEENUM.
  • Clear() — этот метод позволяет очистить все значения, настроенные ранее для объекта PropertyValue.

Все остальные свойства интерфейса IADsPropertyValue предназначены для работы с атрибутами соответствующих типов. Информация о соответствии свойств, предусмотренных в этом интерфейсе, и типами интерфейсов (в соответствии с перечислением ADSTYPEENUM), представлена ниже:

Значение перечисления ADSTYPEENUM

Значение свойства IADsPropertyValue

ADSTYPE_DN_STRING

DNString

ADSTYPE_CASE_EXACT_STRING

CaseExactString

ADSTYPE_CASE_IGNORE_STRING

CaseIgnoreString

ADSTYPE_PRINTABLE_STRING

PrintableString

ADSTYPE_NUMERIC_STRING

NumericString

ADSTYPE_BOOLEAN

Boolean

ADSTYPE_INTEGER

Integer

ADSTYPE_OCTET_STRING

OctetString

ADSTYPE_UTC_TIME

UTCTime

ADSTYPE_LARGE_INTEGER

LargeInteger

ADSTYPE_NT_SECURITY_DESCRIPTOR

SecurityDescriptor

Если вам потребовалось выполнить какую-либо операцию со значением такого типа, который не представлен в этой таблице, интерфейс IADsPropertyValue для этой цели использовать будет невозможно. Вместо этого вам придется воспользоваться интерфейсом IADsPropertyValue2. Для него предусмотрено только два метода:

  • GetObjectProperty() — этот метод позволяет получить значение атрибута объекта Active Directory. Он принимает единственный параметр: тип атрибута в соответствии с перечислением ADSTYPEENUM и возвращает значение этого атрибута при помощи типа данных Variant. Применение этого метода может выглядеть следующим образом:

Const ADSTYPE_CASE_IGNORE_STRING = 3

Dim propList

Dim propEntry

Dim propVal

Dim descString

Set propList = GetObject("LDAP://CN=Alexander Ivanov,OU=HQ,DC=nwtraders1,DC=msft")

propList.GetInfo

Set propEntry = propList.GetPropertyItem("displayName", ADSTYPE_CASE_IGNORE_STRING)

For Each v In propEntry.Values

    Set propVal = v

    descString = propVal.GetObjectProperty(ADSTYPE_CASE_IGNORE_STRING)

    MsgBox "Description: " & descString

Next

Set propList = Nothing

Set propEntry = Nothing

Set propVal = Nothing

  • PutObjectProperty() — этот метод позволяет настроить значение для атрибута объекта Active Directory. В качестве параметров он принимает тип атрибута в соответствии с перечислением ADSTYPEENUM и само значение (как variant). Пример применения этого метода для присвоения значения описанию может выглядеть так:

Const ADSTYPE_CASE_IGNORE_STRING = 3

Dim propList

Dim propEntry

Dim propVal

Dim descString

Set propList = GetObject("LDAP://dc01/DC=Fabrikam,DC=com")

propList.GetInfo

Set propEntry = propList.GetPropertyItem("description", ADSTYPE_CASE_IGNORE_STRING)

descString = "This is Fabrikam.com"

For Each v In propEntry.Values

    Set propVal = v

    propVal.PutObjectProperty ADSTYPE_CASE_IGNORE_STRING, descString

Next

propList.Setinfo

Set propList = Nothing

Set propEntry = Nothing

Set propVal = Nothing

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru