2013-11-22 79 views
0

我越來越想如果我刪除查詢的strWhereOU部分,然後它的工作原理來執行使用VBS錯誤運行時,LDAP查詢

查詢時出現錯誤,所以這個問題是在某個地方,但我不不知道在哪裏。任何指針撥用。謝謝。

我使用這個代碼生成查詢 -

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

回答

0

LIKE %導致該問題,但Adspath上的通配符也是如此。

此處適當的通配符是='*',但似乎無法對Adspath(或distinguishedName)進行通配符搜索。您可以在名稱,CN或其他各種屬性上使用通配符(WHERE Name ='Smith*'),但這對您無能爲力。

您需要將您的FROM位置更改爲類似這樣的內容。

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

閱讀本頁面瞭解更多信息http://technet.microsoft.com/en-us/library/ee692831.aspx

+0

distinguishedName屬性類型定義通常不包括SUBSTR匹配規則。這是在這些情況下不能使用子字符串(不是通配符)斷言值的原因。 –

+0

感謝您的回覆,但不幸的是這不起作用。我首先想到的可能是因爲有問題的OU不是最高級別的,但是甚至硬編碼到查詢測試失敗 - 「服務器上沒有這樣的對象」(代碼80040E37)。 –

+0

道歉,如果我對OU路徑的其餘部分進行硬編碼(但只有正確拼寫容器名稱!!!),它才能正常工作。問題是用戶指定要包含的OU,所以這個方法雖然有效,但看起來對我來說不起作用。謝謝。 –

相關問題