VBScript LDAP查询到Array

时间:2014-02-17 21:36:27

标签: arrays vbscript ldap

我需要将一个查询作为通配符发送到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个数组中。

先谢谢!

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