WMI-запрос к Win32_Directory не возвращает все результаты - PullRequest
3 голосов
/ 04 октября 2011

Я выполняю некоторые запросы WMI к удаленному компьютеру (из JavaScript / JScript, WMIC, загруженного инструмента запросов WMI - это не имеет значения), к которому у меня есть права администратора.

Запросработает против класса Win32_Directory и пытается найти все папки на целевом сервере, которые называются «db», «hooks», «conf» или «locks», но не возвращает все папки;он получает только около 150 из них.

Я попытался выполнить следующие запросы:

SELECT drive, path, filename 
FROM Win32_Directory 
WHERE filename = 'db' 
   OR filename = 'conf' 
   OR filename = 'hooks' 
   OR filename = 'locks'

и:

SELECT drive, path, filename 
FROM Win32_Directory 
WHERE name LIKE '%\\db' 
   OR name LIKE '%\\conf' 
   OR name LIKE '%\\locks' 
   OR name LIKE '%\\hooks'

или в WMIC (с локальной машины):

wmic fsdir where (name like '%\\db' or name like '%\\conf' or name like '%\\hooks' or name like '%\\locks') get drive,path,name

Я почти уверен, что у меня выбрано экранирование с использованием \' и \\, где это уместно для JScript, и я использую базовый вызов var wmiResults = wmi.ExecQuery(wql, 'WQL', 32);, чтобы получитьнабор результатов.

Эквивалентная пакетная команда, запускаемая на локальном компьютере, дает гораздо больше результатов:

for /r %A in (db,conf,hooks,locks) do @if exist "%~A" echo %~A

Это похоже на то, что происходит какое-то кэширование или разбиение на страницы или требуется индексвосстановление, но я не знаю, с чего начать, чтобы он обновлял кэш или извлекал все результаты.

Help !!

...