通过VBscript / ADO访问LDAP服务器

时间:2009-06-09 22:38:43

标签: vbscript ldap ado

绑定到LDAP服务器时,ADO可以访问ADsPath和Name以外的其他属性吗?

以下是我用来绑定和查询互联网上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 个答案:

答案 0 :(得分:3)

请参阅How To Use ADO to Access Objects Through an ADSI LDAP Provider

  

连接对象Execute方法   CommandText(第一个对象)是一个LDAP   查询由四个元素组成   用分号隔开,在   格式如下:

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

其中adsidn是专有名称   (DN)你的出发点   查询表达ADsPath格式   “/”分隔符和。的根   左边的命名空间。你也可以   使用X.500样式属性名称   格式与相对区分   用逗号和根分隔的名称   右侧的名称空间。

     

要返回ADsPathclasscn   所有对象的属性   收件人容器   Exchange服务器,你可以使用   以下CommandText(URL格式):

LDAP :; (objectClass的= *); Active Directory路径,对象类,CN;子树

把它们放在一起,

  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