JavaScript, чтобы остановить определенный сервис - PullRequest
1 голос
/ 31 января 2010

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

var e = new Enumerator(GetObject("winmgmts:").InstancesOf("Win32_Service"))
var WSHShell = new ActiveXObject ("WScript.Shell");

var strPrefix = "TTTT";

for(;!e.atEnd(); e.moveNext()){
 var Service = e.item();
 var strName = Service.Name;

 if (strName.substr (0, strPrefix.length) == strPrefix) { 
  if(Service.StartMode == 'mmManual') {
   WScript.Echo("Yes");
  }
  if(e.StartMode == 'Manual') {
   WScript.Echo("Yes");
  }
 } 
}

В приведенном выше сценарии я пытался узнать режим запуска, но он всегда возвращает true.

Ответы [ 2 ]

2 голосов
/ 31 января 2010

Макдауэлл прав, но учтите, что вы можете избавиться от проверок префиксов и режима запуска в цикле, если сделаете их частью запроса WMI:

SELECT * FROM Win32_Service, ГДЕ ИМЯ НРАВИТСЯ 'TTTT%' И StartMode = 'Ручной'

Используя этот запрос, ваш скрипт может выглядеть так:

var strComputer = ".";
var oWMI = GetObject("winmgmts://" + strComputer + "/root/CIMV2");

var colServices = oWMI.ExecQuery("SELECT * FROM Win32_Service WHERE Name LIKE 'TTTT%' AND StartMode = 'Manual'");
var enumServices = new Enumerator(colServices);

for(; !enumServices.atEnd(); enumServices.moveNext())
{
  var oService = enumServices.item();
  WScript.Echo(oService.Name);
}
1 голос
/ 31 января 2010

Я не совсем уверен, что вы спрашиваете, но это ...

if(Service.StartMode = 'mmManual')

... всегда оценивается как true. Вам не хватает =. Должно быть:

if(Service.StartMode == 'mmManual')
...