Проверка состояния службы

Появилась задача запускать в мелко-мягкой системе некоторый процесс, но с жестким условием — только после того, как некоторая служба будет полностью готова к работе.

В связи с этим родился небольшой скриптик на jScript. Давайте посмотрим на него в контексте некоторого сервиса HTTP. Функция getMyHttpService возвращает объект самого сервиса и вызывается из функции waitForHttpReady - именно эта функция и должна быть вызвана , чтобы дождаться готовности сервиса.

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

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");

Комменты