Can ADO access attributes other that ADsPath and Name when bound to an LDAP server?
Below is the code I use to bind to and query a LDAP server on the internet:
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
Also how do assign the search base in the above code to "o= xxxxxx University;c=US"?
See How To Use ADO to Access Objects Through an ADSI LDAP Provider.
The connection object Execute method's CommandText (first object) is an LDAP query composed of four elements separated by semicolons, in the following format:
<LDAP://server/adsidn>;ldapfilter;attributescsv;scope
where
adsidnis the distinguished name (DN) of the starting point for your query expressed ADsPath format with "/" separators and the root of the namespace to the left. You can also use an X.500 style attributed name format with the relative distinguished names separated by commas and the root of the name space to the right.To return the
ADsPath,class, andcnattributes of all the objects in all the recipient containers in an Exchange server, you can use the following CommandText (in URL format):
LDAP:; (objectClass=*);ADsPath,objectClass,cn;subtree
To put it all together,
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With