Guten Tag,
ich hätt da gern mal ein Problem:
Ich versuche aus dem Windows AD die Usernamen rauszubekommen, in dem ich per LDAP mit der Mailadresseabfrage.
Ein Notesscript dazu habe ich bei MS (
http://searchdomino.techtarget.com/tip/Search-Microsoft-Active-Directory-with-LotusScript)
gefunden und modifiziert:
Function SearchLDAP(userName As String) As String
Dim objConnection As Variant
Dim objCommand As Variant
Dim objRecordSet As Variant
Const ADS_SCOPE_SUBTREE = 2
On Error Goto errHandler
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
' Note: I've used cn field of Active Directory for selection, Other fields like, mail, sn etc can be used instead
objCommand.CommandText = "SELECT sAMAccountName FROM 'LDAP://Ip des AD Servers:389' WHERE userPrincipalName= 'Mein.Name@Firma.com' "
Set objRecordSet = objCommand.Execute
If ( objRecordSet.RecordCount = 0 ) Then
SearchLDAP="0"
Else
SearchLDAP = objRecordSet.Fields("sAMAccountName").Value
End If
objRecordSet.close
Exit Function
errHandler:
Msgbox "Error is : " & Error$ & " at line number : " & Cstr(Erl) & " in SearchLDAP() " & " while processing user : " & Username
Exit Function
End Function
Die objCommand.CommandText - Zeile ist das entscheidende, bzw mein Problem. Wenn sie so ist, also die Mailadresse fest reingeschrieben funktioniert alles. Aber ich will natürlich das ganze dynamisch haben.
Also es gibt ein Textfeld, da kommt die Mailadresse rein und dann soll die Abfrage diese benutzen.
Allerdings bekomme ich dann kein Ergebnis vom AD geliefert.
Ich habe alles probiert, was mir geläufig ist, aber nichts hilft.
Ich vermute, dass die Übergabe des Feldinhaltes die Probleme auslöst.
Diese Zeile wäre aus dem Orginal abgewandelt
objCommand.CommandText = "SELECT sAMAccountName FROM 'LDAP://Ip des AD Servers:389' WHERE userPrincipalName= "'"+userName+"'
Aber mit der Kombination an " und ' bin ich nicht glücklich und bekomme auch eine Fehlermeldung "Provider: Der Befehl enthielt mind. einen Fehler"
Ich habe diesen übergebenen Wert userName schon unbenannt, ohne Erfolg
Dann in eine andere Variable genommen und ' vorne und hinten angefügt und dann in den String aufgenommen, nutzte nix
Nu bin ich mit meinem Latein am Ende.
Hat jemand ne Idee oder gar ne funktionierende Lösung?
Vielen Dank!
Sonnige Grüße aus dem Norden!
Kurt