1

Тема: JS: Синтаксис полусинхронного запроса

Часто встречаю в примерах полусинхронные WQL-запросы, которые должны по идее быстрее работать. Не могу правильно написать такой запрос.

function ExQuery(strComp, strName, strClass)                    
   {
   var SWbemSevices = GetObject("winmgmts:\\\\" + strComp + "\\" + strName);    
   var wbemFlagReturnImmediately = 0x10;            // флаг полусинхронного запроса (десятичное значение 16)
   var wbemFlagForwardOnly = 0x20;                 // флаг полусинхронного запроса (десятичное значение 32)

    try
        {
        var SWbemObjectSet = SWbemSevices.ExecQuery("SELECT * FROM " + strClass , "WQL", wbemFlagReturnImmediately|wbemFlagForwardOnly);        // не работает???
        var coll = new Enumerator(SWbemObjectSet), lst = "";
        for(; !coll.atEnd(); coll.moveNext())
            {
            lst += coll.item().name + "\n";                        }                        
                 ret = "Количество экземпляров класса: \"" + strClass + "\" = " + SWbemObjectSet.count + 
              "\nСписок экземпляров:\n\n" + lst;
                }
                }
    catch(err)
        {
        ret = "Ошибка: " + err.message;
        }
    return WScript.Echo(ret);
    }
ExQuery(".", "root/cimv2", "win32_process");            // результат

Если написать

var SWbemObjectSet = SWbemSevices.ExecQuery("SELECT * FROM " + strClass);

то всё работает.