2009-06-09 10 views
3

L'ADO peut-il accéder à des attributs autres que ADsPath et Name lorsqu'il est lié à un serveur LDAP?Accès au serveur LDAP via VBscript/ADO

Voici le code que j'utilise pour lier et interroger un serveur LDAP sur 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 

également comment faire assigner la base de recherche dans le code ci-dessus « o = xxxxxx Université; c = Etats-Unis "?

Répondre

3

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

L'objet de connexion de méthode Execute CommandText (premier objet) est une requête LDAP composé de quatre éléments séparés par des virgules, dans le format suivant:

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

adsidn est le nom distinctif (DN) du point de départ pour votre requête exprimé format ADsPath avec Séparateurs "/" et racine de l'espace de noms à gauche. Vous pouvez également utiliser le format au format X.500 attribué au format avec les noms distingués séparés par des virgules et la racine de l'espace de nom à droite.

Pour retourner les ADsPath, class et cn attributs de tous les objets dans tous les conteneurs de destinataire dans un serveur Exchange , vous pouvez utiliser le suivant CommandText (en format URL):

LDAP :; (ObjectClass = *); ADsPath, objectClass, cn, sous-arbre

Pour mettre tous ensemble,

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