我需要将一个查询作为通配符发送到LDAP。我有以下代码:
Function SearchLDAP(strUsrName)
Const ADS_SCOPE_SUBTREE = 2
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
objCommand.CommandText = _
"SELECT cn FROM 'LDAP://DC=SYSTEL,DC=LOCAL' WHERE " _
& "objectCategory='user' AND cn = '" &strUsrName&"*'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
'Wscript.Echo objRecordSet.Fields("cn").Value
Dim strReturnUser : strReturnUser = objRecordSet.Fields("cn").Value
objRecordSet.MoveNext
Loop
SearchLDAP = strReturnUser
End Function
如果我运行msgbox SearchLDAP(“A”),它将显示一个仅包含最后一个条目的消息框。如果我取消注释“Wscript.Echo objRecordSet.Fields(”cn“)。”值“它将输出到控制台所有条目。
我需要做的是将所有返回的值显示在消息框中,如:“User 1; User2; User3;” etc ...不是单个消息框,而是一个输出中的所有条目。
我需要通过运行像“msgbox SearchLDAP(”A“)这样的函数来实现这一点,而不是在函数本身中使用”msgbox“。有意义吗?
我似乎无法弄清楚这是否需要在一个数组中,如果是这样,如何将条目输入到我可以输出的1个数组中。
先谢谢!
答案 0 :(得分:1)
你几乎得到了它。将strReturnUser变量移到Do循环之外,然后继续构建字符串。
Dim strReturnUser
strReturnUser = ""
Do Until objRecordSet.EOF
'Wscript.Echo objRecordSet.Fields("cn").Value
strReturnUser = strReturnUser & objRecordSet.Fields("cn").Value & "; "
objRecordSet.MoveNext
Loop
SearchLDAP = strReturnUser