LDAP-Dialekt
Der LDAP-Dialekt ist ein Format für Abfrageanweisungen, die die LDAP-Suchfiltersyntax verwenden. Verwenden Sie eine LDAP-Abfrageanweisung mit den folgenden ADSI-Suchschnittstellen:
- Die ActiveX-Datenobjektschnittstellen (ActiveX Data Object, ADO), bei denen es sich um Automatisierungsschnittstellen handelt, die OLE DB verwenden.
- OLE DB, ein Satz von C/C++-Schnittstellen zum Abfragen von Datenbanken.
- IDirectorySearch, die C/C++-Schnittstelle für Active Directory.
Eine LDAP-Dialektzeichenfolge besteht aus vier Teilen, die durch Semikolons getrennt sind (;).
Distinguished Name der Basis. Beispiel:
<LDAP://DC=Fabrikam,DC=COM>
LDAP-Suchfilter. Weitere Informationen zu Suchfiltern finden Sie unter Suchfiltersyntax.
Der LDAP-Anzeigename der abzurufenden Attribute. Mehrere Attribute werden durch ein Komma getrennt.
Gibt den Bereich der Suche an. Gültige Werte sind "base", "onelevel" und "subtree". Der in einer LDAP-Abfragezeichenfolge angegebene Bereich überschreibt jeden Suchbereich, der mit der "SearchScope"-Eigenschaft des ADO Command-Objekts angegeben wird.
Im Folgenden finden Sie ein Codebeispiel für den LDAP-Dialekt in ADSI, der alle Objekte in der Unterstruktur durchsucht.
"<LDAP://DC=Fabrikam,DC=com>;(objectClass=*);AdsPath, cn;subTree"
Nicht alle Suchoptionen (z. B. Die Größe der Suchseite) können im LDAP-Dialekt ausgedrückt werden. Daher müssen Sie die Optionen festlegen, bevor die eigentliche Abfrageausführung beginnt.
Beispielcode zum Ausführen einer LDAP-Abfrage
Im folgenden Codebeispiel wird die Verwendung einer LDAP-Abfrage veranschaulicht.
Dim con As New Connection, rs As New Recordset
Dim adVariant
Dim i 'Used for counter
Dim j 'Used for counter
Dim Com As New Command
Dim strDomain As String
Dim strPassword As String
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
con.Properties("User ID") = strDomain + "\" + strUserID
con.Properties("Password") = strPassword
con.Open "Active Directory Provider"
' Create a command object on this connection.
Set Com.ActiveConnection = con
' Set the query string.
Com.CommandText = "<LDAP://MyServer/DC=MyDomain,DC=Fabrikam,DC=com>;
(objectClass=*);ADsPath, objectclass;base"
' Set search preferences.
Com.Properties("Page Size") = 1000
Com.Properties("Timeout") = 30 'seconds
' Execute the query.
Set rs = Com.Execute
' Navigate the record set.
rs.MoveFirst
While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
If rs.Fields(i).Type = adVariant And Not (IsNull(rs.Fields(i).Value)) Then
Debug.Print rs.Fields(i).Name, " = "
For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
Debug.Print rs.Fields(i).Value(j), " # "
Next j
Else
Debug.Print rs.Fields(i).Name, " = ", rs.Fields(i).Value
End If
Next i
rs.MoveNext
Wend
rs.MoveLast
Debug.Print "No. of rows = ", rs.RecordCount
Ausführliche Informationen zur Abfragesyntax finden Sie unter Suchfiltersyntax.
Zugehörige Themen