停止特定服务的javascript

停止特定服务的javascript,javascript,service,wsh,Javascript,Service,Wsh,我在脚本中有以下代码。 问题是,我想获取以特定名称开始并位于特定startmode中的脚本的信息 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 =

我在脚本中有以下代码。 问题是,我想获取以特定名称开始并位于特定startmode中的脚本的信息

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。

我不确定您到底在问什么,但这

if(Service.StartMode = 'mmManual')
…将始终计算为
true
。您缺少一个
=
。应该是:

if(Service.StartMode == 'mmManual')

McDowell是对的,但请注意,如果将前缀和启动模式检查作为WMI查询的一部分,则可以在循环中取消它们:

从Win32_服务中选择*,其中名称如“TTTT%”和StartMode=“Manual”

使用此查询,您的脚本可能如下所示:

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

嘿Java和javascript完全不同。请更改您的标签。是的,您是对的!!!我更新了问题。我仍然找不到如何确定有关服务的StartMode的数据?什么是“winmgmts://”+strComputer+“/root/CIMV2”?@Roman:这是用于连接WMI服务的名字对象字符串(请参阅)。它相当于脚本中的
GetObject(“winmgmts:”)
,但明确指定计算机名(
表示本地计算机)和默认WMI命名空间路径(
root\cimv2
)。