And*_*dez 6 windows service file batch-file
所有,
我正在尝试停止我们创建的依赖于其他服务的Windows服务.我只想使用批处理文件,例如sc命令来停止这两项服务,其中服务在远程计算机上运行.
我已经尝试按依赖顺序停止服务(最少依赖第一),但它不会停止服务.
例如,Service1依赖于在服务控制台的"服务"设置中配置的Service2.我在Windows 7 PC上运行脚本,服务器运行Windows Server 2003.
以下行位于我创建的noddy批处理文件中:
sc \\SERVER stop "Service1"
sc \\SERVER stop "Service2"
Run Code Online (Sandbox Code Playgroud)
命令控制台中的输出是:
D:\Test>sc \\SERVER stop "Service2"
[SC] ControlService FAILED 1051:
A stop control has been sent to a service that other running services are dependent on.
Run Code Online (Sandbox Code Playgroud)
服务Service2不会停止.Service1停止罚款.
有任何想法吗?
谢谢,
Andez
小智 10
"net stop"命令有一个未注释的参数.此参数为/ yes,也将自动停止所有相关服务
因此,要停止包含或不包含依赖关系的服务,只需键入即可
net stop spooler /yes
Run Code Online (Sandbox Code Playgroud)
您可以通过运行来检查服务具有哪些依赖项sc qc <service>
为了编写脚本并检索依赖项,您可以将其放入 for 循环中
例子:
@echo off
setlocal enabledelayedexpansion
set service=winmgmt
set server=server
for /f "Tokens=2 Delims=:" %%i in ('sc \\%server% qc %service% ^| find /i "DEPENDENCIES"') do (
set depservice=%%i
rem removes spaces
set depservice=!depservice: =!
sc \\%server% stop "!depservice!"
rem extra: accumulate all dependencies to one variable
set alldeps=!alldeps!, !depservice!
rem remove first ", " in variable
set alldeps=!alldeps=~2!
)
sc \\%server% stop "%service%" && echo Both %service% and !alldeps! were stopped || echo Something went wrong stopping %service%
exit /b
Run Code Online (Sandbox Code Playgroud)
仅当您要停止的服务仅具有一个依赖项时,上述方法才有效。