2014-02-17 39 views
0

我需要将查询作为通配符发送到LDAP。我有以下代码:将VBScript 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“)。Value”它将输出以控制所有条目。

我需要做的是将所有返回的值显示在如下消息框中:“User 1; User2; User3;”等等...不是单独的消息框,而是一个输出中的所有条目。

我需要运行一个命令,如“MSGBOX SearchLDAP(” A“)的功能,不具有‘在函数中MSGBOX’来做到这一点。什么意义?

我似乎无法弄清楚如果需要在一个数组,如果是的话,如何让项目进入1个阵列,我可以再输出。

感谢advnace!

回答

1

你几乎得到了它。移动strReturnUser变量的外做循环,只是不断建设的字符串。

Dim strReturnUser 

strReturnUser = "" 

Do Until objRecordSet.EOF 
    'Wscript.Echo objRecordSet.Fields("cn").Value 
    strReturnUser = strReturnUser & objRecordSet.Fields("cn").Value & "; " 
    objRecordSet.MoveNext 
Loop 

SearchLDAP = strReturnUser 
+0

太棒了!感谢你及时的答复。正是我需要的。 – user3320719