объекта. Возможными значениями параметра className
group
(группа пользователей), 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