如果服务存在条件

你将如何检查是否存在服务,如果有,请执行一些操作?

sc命令允许你查询Windows服务, 这里可以find完整的细节。

所以你可以查询一个特定的服务,如果它存在,你将得到如下的细节:

sc query lanmanserver结果

 SERVICE_NAME: lanmanserver TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE,PAUSABLE,ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 

查询不存在的服务会导致:

 [SC] EnumQueryServicesStatus:OpenService FAILED 1060: The specified service does not exist as an installed service. 

所以你可以编写一个脚本来检查响应,然后根据它执行任何你想要的操作。

如果你没有使用批处理脚本,你也可以在Powershell中写更好的东西,比如

 function serviceCheck ($service, $machine) { $result = [System.ServiceProcess.ServiceController]::GetServices($machine) | where{ (($_.name -eq $service) -or ($_.displayname -eq $service)) } if (result -eq $null) { Do something if service does not exist } else { Do something if service does exist } } 

经过一些Googlesearch,这里有一些vb代码片段,用于testing是否存在服务并执行启动方法。

 Dim colServices As Object Dim objService As Object Set colServices = GetObject("winmgmts:").ExecQuery _ ("Select Name from Win32_Service where Name = '" & PutServiceNameHere& "'") For Each objService In colServices If Len(objService.Name) Then objService.StartService() End If Next Set colServices = Nothing 

希望这可以帮助。