| |
15.6 ADSI. Диалект запросов LDAP при поиске в службе каталогов
Поиск в Active Directory из скриптов ADSI в VBScript, диалект запросов LDAP, базовое отличительное имя, поисковые фильтры, набор атрибутов, определение диапазона поиска, RFC 2254
Пример запроса на языке LDAP может выглядеть следующим образом:
"<LDAP://DC=nwtraders1,DC=msft>;(objectClass=*);AdsPath, cn;subTree"
Расшифруем каждую часть этого запроса.
- Первая часть (в нашем примере — <LDAP://DC=nwtraders1,DC=msft>) называется базовым отличительным именем (base distinguished name). В ней используется синтаксис вида LDAP://отличительное_имя. Отличительное имя должно принадлежать контейнерному объекту, по которому производится поиск. Чаще всего здесь указывается отличительное имя объекта домена, сайта или организационного подразделения.
- Вторая часть (в нашем примере — (objectClass=*)) называется поисковым фильтром LDAP. Про синтаксис поисковых фильтров будет рассказано ниже. Отметим только, что смысл поискового фильтра в нашем примере означает "искать любые объекты".
- Третья часть (в нашем примере — AdsPath, cn) называется набором атрибутов. Она представляет набор атрибутов объектов Active Directory (столбцов в объекте ADODB.Recordset), которые будут возвращаться в ходе выполнения запроса. Если необходимо вернуть несколько атрибутов для объекта, наименования атрибутов должны быть разделены запятыми.
- Четвертая часть (а нашем примере — subTree) называется определением диапазона поиска. Для нее можно использовать только три значения:
- base — поиск производится только по одному объекту (указанному при помощи базового отличительного имени). При выполнении такого поиска всегда возвращается либо один объект, либо пустой набор объектов. Конечно же, такой поиск правильнее называть не поиском, а проверкой существования объекта;
- onelevel — поиск производится только по непосредственным дочкам контейнерного объекта (указанному при помощи базового отличительного имени). Поиск по объектам более низких уровней (например, находящихся во вложенных в данный объект организационных подразделениях) производится не будет. В диапазон поиска не попадет и сам контейнерный объект, указанный при помощи базового отличительного имени;
- subtree — поиск будет производиться по всем объектам вниз по иерархии объектов службы каталогов (включая те, который находятся во вложенных OU). Другое называние такого поиска — глубокий поиск (deep search). В диапазон поиска при этом не попадает контейнерный объект, указанный при помощи базового отличительного имени.
В нашем примере используется значение subtree, что значит: вернуть информацию о всех объектах на всех уровнях ниже домена nwtraders.msft.
Другие параметры поиска (тайм-аут, максимальное количество возвращаемых результатов и т.п.) можно настроить при помощи свойств объекта ADODB.Command, который будет использован для выполнения данного запроса.
Полную справочную информацию о синтаксисе запросов LDAP можно найти в RFC2254.
| |
 |
|