Delphi - сбориник статей

         

VBS


Первая реализация задачи была сделана на VBS. И это понятно. Достаточно зайти на сайт Микрософт и скачать готовые скрипты. И немного их подправить под свои нужды. Кроме того, на VB код получается очень короткий и легкий для восприятия. Вот пример создания списка компьютеров из домена, расположенных в определенном organization unit в Active Directory (AD):

Set objDictionary = CreateObject("Scripting.Dictionary") strDomain = "LDAP://ou=Test, ou=Mine, dc=mydomain, dc=com" Set objDomain = GetObject(strDomain) objDomain.Filter = Array("computer") i = 0 For Each objComputer In objDomain objDictionary.Add i, Mid(objComputer.Name,4) i = i + 1 Next


Рисунок 1

Для получения доступа к пространству имен каталога необходимо связаться с нужным объектом ADSI.

Set objDomain = GetObject(strDomain)

strDomain - строка связывания.

Первая часть строки связывания определяет, к какой именно службе каталогов мы обращаемся.

Примеры обращения к различным службам



"LDAP://"Служба каталогов, созданная на основе протокола LDAP (Active Directory в том числе)
"WinNt://"Служба каталогов в сети Windows NT 4.0 или на рабочей станции Windows XP/2000

Вторая часть строки связывания определяет положение объекта в каталоге.

В следующих таблицах приводятся примеры строк связывания:

LDAP

LDAP:Связь с корнем пространства имен LDAP
LDAP://server01Связь с конкретным сервером
LDAP://server01:390Связь с конкретным сервером через указанный порт
LDAP://CN=Jeff Smith,CN=users,DC=fabrikam,DC=comСвязь с конкретным объектом
LDAP://server01/CN=Jeff Smith,CN=users,DC=fabrikam,DC=comСвязь с конкретным объектом через указанный сервер

WinNT

WinNT://<domain name>
WinNT://<domain name>/<server>
WinNT://<domain name>/<path>
WinNT://<domain name>/<object name>
WinNT://<domain name>/<object name>,<object class>
WinNT://<server>
WinNT://<server>/<object name>
WinNT://<server>/<object name>,<object class>

Устанавливаем фильтр для выделения объектов - компьютеров.

objDomain.Filter = Array("computer")

И затем перебираем элементы коллекции.

Главный минус данной реализации (на мой взгляд) - это низкая скорость работы. Для перебора ~150 рабочих станция и смены на них пароля понадобилось около часа времени.

Основные задержки приходятся на операцию связывания. Особенно большие таймауты при попытке связывания с выключенным или не существующим компьютером ( или если по какой-то причине отказано в доступе). Решением данной проблемы является организация многопоточности. Поэтому от VBS пришлось отказаться.



Содержание раздела