|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
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:
Все остальные свойства интерфейса IADsPropertyValue предназначены для работы с атрибутами соответствующих типов. Информация о соответствии свойств, предусмотренных в этом интерфейсе, и типами интерфейсов (в соответствии с перечислением ADSTYPEENUM), представлена ниже:
Если вам потребовалось выполнить какую-либо операцию со значением такого типа, который не представлен в этой таблице, интерфейс IADsPropertyValue для этой цели использовать будет невозможно. Вместо этого вам придется воспользоваться интерфейсом IADsPropertyValue2. Для него предусмотрено только два метода:
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
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
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||