微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过batch file停止依赖于其他服务的Windows服务

所有,

我试图阻止我们创build的依赖于另一个服务的Windows服务。 我只想停止使用batch file的服务,例如在远程机器上运行服务的sc命令。

我已经尝试停止服务的依赖顺序(最不依赖的第一),但它并没有停止服务。

例如,Service1依赖于在服务控制台中的服务设置中configuration的Service2。 我在Windows 7 PC上运行脚本,服务器运行Windows Server 2003。

如何检查一个文件是否存在,并在C ++中可读?

迫使Windows更新文件访问时间的方法*现在*

什么是从Windows上的文件删除前N个字节的最有效的方法

将X文件一个文件夹移动到Powershell中的另一个文件

通过删除linux中的url参数来重命名文件

以下行在我创build的noddybatch file中:

sc \SERVER stop "Service1" sc \SERVER stop "Service2"

命令控制台中的输出是:

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.

服务Service2不会停止。 Service1停止罚款。

有任何想法吗?

谢谢,

Andez

在Linux中对多个文件进行sorting

Python – 如何将文件从Windows共享复制到Linux共享

在XP中使用TCL访问共享文件夹,而不映射到驱动器

以编程方式确定video文件格式?

如何更改Visual Studio 2012(C ++)中的认.exe图标

“净停止”命令有一个没有评论的参数。 这个参数是/是,并且会自动停止所有的依赖服务

所以要停止一个有或没有依赖关系的服务,只需键入

net stop spooler /yes

您可以通过运行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

只有当你想停止的服务只有一个依赖时,上述才会起作用。

对于遇到类似问题的任何人:

请记住, SC命令是异步的 。 以下可能会有所帮助:

停止批处理文件,直到服务停止完成?

Niklas批处理文件不适用于我。

看来在Windows server 2008 R2上,qc命令显示了该服务依赖的服务。 在这一点上他们是不相关的,你可以停止服务,而不会造成他们的生活波动。

你真正想要的是依赖于被杀的服务的服务。 你可以用EnumDepend命令将这些命令转换为sc.exe。

不幸的是,输出语法有很大的不同,所以你需要保留上面显示的逻辑,但是替换解析。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐