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

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

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

javascript
  1.  
  2. function getMyHttpService(){
  3. var items = new Enumerator(GetObject('winMgmts://./root/cimv2').ExecQuery('select * from Win32_Service where Name="MyHttpServer"'));
  4. return items.item();
  5. }
  6.  
  7. function waitForHttpReady()
  8. {
  9. var run = "";
  10. while(run!='Running'){
  11. var http = getMyHttpService();
  12. run = http.State;
  13. WScript.Sleep(200);
  14. }
  15. }
  16.  
  17. waitForHttpReady();
  18. WScript.Echo("service is ready");
  19.  

Комменты

Добавить коммент