Доступ к серверу LDAP через VBscript / ADO - PullRequest
3 голосов
/ 10 июня 2009

Может ли ADO получать доступ к атрибутам, отличным от ADsPath и Name, когда они связаны с сервером LDAP?

Ниже приведен код, который я использую для привязки и запроса к серверу LDAP в Интернете:

Set ado = CreateObject("ADODB.Connection")                     
ado.Provider = "ADSDSOObject"
ado.Properties("User ID") = ""                                
ado.Properties("Password") = ""
ado.Properties("Encrypt Password") = False
ado.Open "NameSearch"                                     


serverName = "xxxxxx.xxxx.xxx"                           
filterStr = "(objectClass=*)"     

Set Ol= ado.Execute("<LDAP://" & serverName & ">;" & filterStr & ";ADsPath;SubTree")

While Not Ol
    WScript.Echo Ol.Fields(0).value
    Ol.MoveNext                                        
Wend

Также, как назначить базу поиска в приведенном выше коде для "o = xxxxxx University; c = US"?

1 Ответ

3 голосов
/ 10 июня 2009

См. Как использовать ADO для доступа к объектам через поставщика ADSI LDAP .

Объект подключения Выполнить методом CommandText (первый объект) является LDAP запрос состоит из четырех элементов через точку с запятой, в следующий формат:

<LDAP://server/adsidn>;ldapfilter;attributescsv;scope

, где adsidn - отличительное имя (DN) отправной точки для вашего запрос выраженный формат ADsPath с Разделители "/" и корень пространство имен слева. Вы также можете используйте имя в стиле X.500 формат с относительным отличием имена, разделенные запятыми и корнем пространства имен справа.

Для возврата ADsPath, class и cn атрибуты всех объектов во всех контейнеры получателя в Сервер Exchange, вы можете использовать следующий CommandText (в формате URL):

LDAP :; (Объектный = *); ADsPath, объектный, сп; поддерево

Чтобы сложить все вместе,

  Dim conn As ADODB.Connection
  Dim rs As ADODB.Recordset

  Set conn = New ADODB.Connection
  conn.Provider = "ADSDSOObject"
  conn.Open "ADs Provider"

  Set rs = conn.Execute( _ 
        "<LDAP://server/o=organization/o=xxxxxx University/c=US>;" _
        & "(objectClass=*);ADsPath,objectClass,cn;subtree")

  While Not rs.EOF
     Debug.Print rs.Fields(0).Value, rs.Fields(1).Value, _
           rs.Fields(2).Value
     rs.MoveNext
  Wend

  conn.Close
...