2013-11-22 10 views
0

Я получаю сообщение об ошибке при попытке выполнить запрос с помощью VBSОшибка при выполнении запроса LDAP

Если удалить 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

ответ

0

Эта проблема вызывает проблему LIKE %, но это также шаблон шаблона Adspath.

Соответствующий шаблон используется здесь ='*', но, похоже, вы не можете выполнять поиск подстановочных знаков против Adspath (или differName). Вы можете использовать подстановочный знак для имени, 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 должен включать, поэтому этот метод, хотя и действителен, выглядит так, как будто это не сработает в моем случае. Благодарю. –

Смежные вопросы