Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Иван Коробко
В предыдущей статье были рассмотрены теоретические аспекты построения Active Directory и проведен обзор доступных провайдеров, с помощью которых можно программно управлять Active Directory. Одним из таких провайдеров является WinNT, основы программирования которого будут рассмотрены в данной статье.
Объектная модель провайдера WinNT
Рассмотрим программное управление ADSI с помощью провайдера WinNT, с помощью которого осуществляется доступ к классам. Каждый класс содержит один или несколько подклассов. Объектная модель протокола WinNT, в которой перечислены только классы, приведена на рисунке 1.
Рисунок 1
Доступ к объектам по протоколу WinNT описывается запросом, имеющим вид:
WinNT:[//DomainName[/ComputerName[/ObjectName[,ClassName]]]]
Доступ к провайдеру WinNT осуществляется по одному из шаблонов:
1) Название класса содержится в запросе. С помощью функции GetObject формируется запрос, который включает в себя четыре параметра: название протокола – WinNT, имя домена – DomainName, рабочей станции – ComputerName, название объекта – ObjectName, название класса – ClassName. В этом случае доступ к подклассам осуществляется с помощью цикла For. На VBScript в общем виде запрос выглядит следующим образом:
Пример 1а)
Set obj=GetObject("WinNT://" & DomainName & "/" & ComputerName & "/" & ObjectName & "," & ClassName).
For Each element In obj
element.value
Next
Параметры ComputerName и ObjectName могут отсутствовать в том случае, если осуществляется поиск объектов.
2) Подключение к классу с помощью фильтра. Метод по своей сути аналогичен предыдущему. Такой способ доступа к данным позволяет значительно увеличить скорость исполнения скрипта.
Пример 1б)
Set obj = GetObject("WinNT://" & DomainName)
obj.Filter = Array("user")
For Each element In obj
element.value
Next
Приведем два примера: в первом примере будет осуществляться поиск объектов класса и вывод свойств этих объектов, во втором – чтение и вывод свойств заданного объекта. В первом примере с помощью скрипта на VBScript будут определены учетные записи пользователей домена и прочитаны их имена:
Пример 2а). Первый способ доступа к объектной модели
strDomain="MyDomain"
Set Computer =GetObject("WinNT://" & strDomain & ",user")
For Each User in Computer
users_d=users_d & " "& User.Name & chr(13)
Next
Wsh.Echo users_d
Пример 2б) Второй способ доступа к объектной модели
strDomain="MyDomain"
Set Computer =GetObject("WinNT://" & strDomain)
Computer.Filter = Array("user")
For Each User in Computer
users_d=users_d & " "& User.Name & chr(13)
Next
Wsh.Echo users_d
Во втором примере явным образом задается имя пользователя и осуществляется чтение его свойств:
Пример 3a). Первый способ доступа к объектной модели
strDomain="MyDomain"
strUser="MyUserName"
Set Computer =GetObject("WinNT://" & strDomain & "/" & strUser & ",user")
users_d= User.Name & chr(13)
Wsh.Echo users_d
Пример 3б). Второй способ доступа к объектной модели
strDomain="MyDomain"
Set Computer =GetObject("WinNT://" & strDomain)