У меня есть следующий 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).