Проверка состояния службы
Появилась задача запускать в мелко-мягкой системе некоторый процесс, но с жестким условием — только после того, как некоторая служба будет полностью готова к работе.
В связи с этим родился небольшой скриптик на jScript. Давайте посмотрим на него в контексте некоторого сервиса HTTP. Функция getMyHttpService возвращает объект самого сервиса и вызывается из функции waitForHttpReady - именно эта функция и должна быть вызвана , чтобы дождаться готовности сервиса.
Стоит обратить внимание , что в цикле функции waitForHttpReady полученный на прошлой итерации объект сервиса использовать нельзя - его статус не меняется в реальном времени - надо делать новую выборку, потому функция getMyHttpService вызывается на каждой итерации цикла.
javascript
function getMyHttpService(){ var items = new Enumerator(GetObject('winMgmts://./root/cimv2').ExecQuery('select * from Win32_Service where Name="MyHttpServer"')); return items.item(); } function waitForHttpReady() { var run = ""; while(run!='Running'){ var http = getMyHttpService(); run = http.State; WScript.Sleep(200); } } waitForHttpReady(); WScript.Echo("service is ready");