运行LDAP查询时出错

时间:2013-11-22 16:35:33

标签: vbscript ldap syntax-error

尝试使用VBS执行查询时出现错误

如果我删除查询的strWhereOU部分,那么它可以工作,所以问题就在那里,但我不知道在哪里。任何指针都是挪用的。感谢。

我正在使用此代码生成查询 -

For i = 0 To Ubound(arrIncludeOU)
    arrIncludeOU(i) = "ADsPath LIKE '%OU=" & Trim(arrIncludeOU(i)) & "%'"
Next
strWhereOU = "AND (" & Join(arrIncludeOU, " OR ") & ") "

'** Set the query string and parameters *'
objCommand.CommandText = _
    "SELECT Name, operatingSystem, ADsPath, lastLogonTimeStamp " & _
    "FROM 'LDAP://" & strDomain & "' " & _
    "WHERE objectClass = 'computer' " & strWhereOU & _
    "ORDER BY Name"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = 2
objCommand.Properties("Timeout") = 30
objCommand.Properties("Cache Results") = False

'** Execute the query *'
Set objRecordSet = objCommand.Execute

以下是正在生成的查询 -

VBS Query

这是我得到的错误 -

VBS Error

1 个答案:

答案 0 :(得分:0)

LIKE %导致问题,但Adspath上的通配符也是如此。

此处使用的相应通配符为='*',但似乎您无法对Adspath(或distinguishedName)进行通配符搜索。您可以在Name,CN或其他各种属性(WHERE Name ='Smith*')上使用通配符,但这对您没有帮助。

您需要将FROM位置更改为此类内容。

strOU = "OU=Sherborne Desktops,"
"FROM 'LDAP://" & strOU & strDomain & "' " & _

阅读此页面以获取更多信息http://technet.microsoft.com/en-us/library/ee692831.aspx