Perl для системного администрирования



         

ADSI (Интерфейсы служб активных каталогов) - часть 11


$c->{Provider} = "ADsDSOObject";

$c->OpenC'ADSI Provider");

die Win32::OLE->LastError() if Win32::OLE->LastError();

подготавливаем и выполняем запрос

$ADsPath = "LDAP://ldapserver/dc=example,dc=com";

$rs = $c->Execute("<$ADsPath>;(objectClass=Group);Name;SubTree");

die Win32::OLE->LastError() if Win32::OLE->LastError();

until ($rs->EOF){

print $rs->Fields(0)->{Value},"\n"; $rs->MoveNext;

$rs->Close; $c->Close;

Блок кода после загрузки модуля получает экземпляр объекта ADO Connection, устанавливает имя провайдера для этого экземпляра объекта, а затем просит его открыть соединение. Соединение открывается от имени пользователя, запускающего сценарий, хотя можно было установить другие свойства объекта, позволяющие изменить такое поведение.

Затем выполняется собственно поиск при помощи Execute(). Поиск можно осуществлять средствами одного из двух «диалектов»: SQL или ADSL Диалект ADSI, как видно из программы, использует командную строку, состоящую из четырех аргументов, каждый из которых разделен точкой с запятой.2 Вот эти аргументы:

  • ADsPath (в угловых скобках), определяющий сервер и базовое DN-имя для поиска.
  • Фильтр поиска (применяется тот же синтаксис LDAP-фильтров, что упоминался раньше).
  • Имя или имена (разделенные запятыми) возвращаемых свойств.
  • Пространство поиска: либо Base, либо OneLevel, либо SubTree (в соответствии со стандартом LDAP).
  • Execute() возвращает ссылку на первый из объектов ADO RecordSe, получаемых в результате запроса. По очереди запрашивается каждый из объектов RecordSet, распаковываются объекты, которые в нем содержатся, и выводится свойство Value, возвращаемое методом Fields() для каждого из этих объектов. Свойство Value содержит значение, которое запрашивалось в командной строке (имя объекта Group). Вот как выглядит отрывок получаемых данных на машине с Windows 2000:

    Administrators

    Users

    Guests

    Backup Operators

    Replicator

    Server Operators




    Содержание  Назад  Вперед