SWbemServices.ExecQuery - «Неверный параметр» при добавлении предложения WHERE - PullRequest
0 голосов
/ 18 июля 2011

У меня есть следующий JavaScript для выполнения запроса WMI на удаленном хосте Windows:

var wmiLocator = WScript.CreateObject("WbemScripting.Swbemlocator");
var wmiService = wmiLocator.ConnectServer(host, "root\\cimv2", user, pass);

var items = wmiService.ExecQuery(query);

for(var e = new Enumerator(items); ! e.atEnd(); e.moveNext())
{
    WScript.StdOut.Write(e.item().GetObjectText_());
}

user и pass - учетные данные для удаленного доступа host, query - WQL-запрос, который нужно выполнить.

Это все работает нормально, пока я не добавлю предложение WHERE в запрос WQL. Например,

SELECT * FROM Win32_LogicalDisk

дает ожидаемый результат, но

SELECT * FROM Win32_LogicalDisk WHERE DriveType=3

приведет к ошибке «Неверный параметр» (wbemErrInvalidParameter / 0x80041008).

Я нашел множество примеров, в которых используются предложения WHERE, и я не могу найти никакой информации о том, что она не поддерживается. Я что-то здесь упускаю?

В случае, если это имеет какое-либо значение, хост, выполняющий этот сценарий, является Windows XP Professional с пакетом обновления 2 (SP2).

1 Ответ

0 голосов
/ 05 июля 2012

Как подсказала Хелен, я отвечаю на это сам.

Строка запроса была изменена из-за некоторого анализа, который я делал ранее в моем скрипте, и стала синтаксически недействительной, следовательно, ошибка недопустимого параметра.

...