2009-06-09 4 views
3

Может ли ADO использовать другие атрибуты ADsPath и Name при привязке к LDAP-серверу?Доступ к LDAP-серверу через VBscript/ADO

Ниже приведен код, который я использую для связывания и запрос к серверу 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 

Кроме того, как назначить поисковую базу в приведенном выше коде «о = хххххх университет; с = США «?

ответ

3

См. How To Use ADO to Access Objects Through an ADSI LDAP Provider.

Объект подключения Выполнение метода, 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 
Смежные вопросы