объекта. Возможными значениями параметра classNamegroup (группа пользователей), user (пользователь), printer (принтер) или service (сервис Windows ХР).
Указав в качестве строки ADsPath просто 'WinNT:', можно выполнить связывание с корневым объектом-контейнером, содержащим все остальные объекты службы каталога.
Приведем несколько примеров строк связывания для доступа к различным объектам компьютера Windows ХР (табл. 11.1).
| Строка ADsPath | Описание |
|---|---|
'WinNT:' | Строка для связывания с корневым объектом пространства имен |
'WinNT://404_Popov' | Строка для связывания с компьютером 404_Popov |
'WinNT://404_Popov/Popov,user' | Строка для связывания с пользователем Popov компьютера 404_Popov |
'WinNT://404_Popov/BankUsers, group' | Строка для связывания с группой BankUsers на компьютере 404_Popov |
Для того чтобы из сценария WSH использовать объект ADSI, соответствующий сформированной строке связывания, необходимо применить функцию GetObject языка JScript, которая возвращает ссылку на объект ActiveX, находящийся во внешнем каталоге. Например:
var NameSpaceObj = GetObject('WinNT:');
var ComputerObj = GetObject('WinNT://404_Popov');
var UserObj = GetObject('WinNT://404_Popov/Popov,user');
var GroupObj = GetObject('WinNT://404_Popov/BankUsers, group');
Во всех рассмотренных ранее сценариях для создания объектов ActiveX мы пользовались методами CreateObject и GetObject объекта WScript или объектом ActiveXObject языка JScript. Для связывания же с объектом ADSI нужно использовать именно функцию GetObject языка JScript (или VBScript)!
Перейдем теперь к рассмотрению конкретных примеров сценариев, использующих объекты ADSI.
Список всех доступных доменов в локальной сети
В листинге 11.1 приведен JScript-сценарий ListDomains.js, в котором создается список всех доменов, доступных в сети (рис. 11.1)
Рис. 11.1. Список всех имеющихся в сети доменов
В рассматриваемом сценарии производятся следующие действия. Сначала создается корневой объект NameSpaceObj класса Namespace для провайдера Windows NT, который содержит все остальные объекты службы каталога:
//Связываемся с корневым объектом Namespace
NameSpaceObj = GetObject('WinNT:');
Затем с помощью свойства Filter из коллекции NameSpaceObj выделяются все содержащиеся в ней объекты класса Domain и создается экземпляр объекта Enumerator (переменная е) для доступа к элементам коллекции NameSpaceObj:
//Устанавливаем фильтр для выделения объектов-доменов
NameSpaceObj.Filter = Array('domain');
//Создаем объект Enumerator для доступа к коллекции NameSpaceObj
E=new Enumerator(NameSpaceObj);
Список доменов будет храниться в переменной List, которая инициализируется следующим образом:
List='Bce доступные домены в сети:
';
В цикле while выполняется перебор всех элементов коллекции, которые являются объектами класса Domain; название домена, хранящееся в свойстве Name, добавляется (вместе с символом разрыва строки) в переменную List:
while (!E.atEnd()) {
//Извлекаем текущий элемент коллекции (объект класса Domain)
DomObj=Е.item();
//Формируем строку с именами доменов
List+=DomObj.Name+'
';
//Переходим к следующему элементу коллекции
E.moveNext();
}
Сформированная таким образом переменная List выводится на экран с помощью метода Echo() объекта WScript:
WScript.Echo(List);
/********************************************************************/
/* Имя: ListDomains.js */
/* Язык: JScript */
/* Описание: Вывод на экран списка всех доменов локальной сети */
/********************************************************************/
//Объявляем переменные
var
