2009-06-09 6 views
3

Kann ADO auf andere Attribute wie ADsPath und Name zugreifen, wenn sie an einen LDAP-Server gebunden sind?LDAP-Serverzugriff über VBscript/ADO

Unten ist der Code ich zu binden, verwenden und einen LDAP-Servers im Internet abfragen:

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 

Auch, wie die Suchbasis auf „o = xxxxxx Universität in dem obigen Code vergeben; c = US "?

Antwort

3

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

Das Verbindungsobjekt Execute Command Methode (erstes Objekt) ist ein LDAP Abfrage von vier Elementen durch Semikolons getrennt sind, in dem folgende Format:

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

wo adsidn ist der definierte Name (DN) des Startpunkts für Ihre Abfrage ausgedrückt ADsPath-Format mit "/" Trennzeichen und das Stammverzeichnis des Namensraums auf der linken Seite. Sie können auch verwenden ein X.500-Stil attributierten Namen Format mit den relativ unterschiedlichen Namen getrennt durch Kommas und die Wurzel des Namensraum rechts.

Zur Rückkehr der ADsPath, class und cn Attribute aller Objekte in allen den Empfängercontainer in einem Exchange-Server, können Sie die folgenden Command (im URL-Format) verwenden können:

LDAP :; (Objectclass = *); ADsPath, Object, cn; subtree

Um es alle zusammen,

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