我想创建一些脚本(Windows Batch 或 PowerShell,无论哪个都可以),可以停止和启动 binPath 位于特定文件夹中的服务。这将加快软件调试速度,因为我经常需要停止 4 个服务,修改配置文件,然后再次启动 4 个服务。如果我有一个脚本,只需单击按钮即可停止和启动这些服务,这将真正加快我的工作流程,并且对使用该软件的其他人也很有用。
该软件将从类似以下位置运行:C:\MyProgram
,并且 4 个服务将位于C:\MyProgram\bin
例如。
我希望当我运行我的脚本时,脚本在 bin 目录内停止、等等service1.exe
。service2.exe
是否可以sc stop
在 Windows Batch 或Stop-Service
PowerShell 中使用它传递 binPath 参数?
我查看了这些命令的文档,但找不到实现此目的的方法。也许我需要将其作为几个命令的序列来执行,但我不知道我需要哪些命令。
答案1
这并不简单,但您可以遍历 HKLM\SYSTEM\CurrentControlSet\Services 下的注册表。ImagePath 键包含可执行文件名称。找到后,使用服务名称来控制服务。Powershell 可以使用 get-childitem 和路径轻松完成此操作HKLM:\SYSTEM\CurrentControlSet\Services\
答案2
感谢您的建议,我设法与软件开发人员合作,在软件安装后在文本文件中留下以换行符分隔的服务名称的痕迹。
这样,我就可以使用一些简单的 PowerShell 轻松启动和停止服务:
$services = Get-Content("services.txt").Split()
foreach ($service in $services) {
Start-Service $service
}
这比尝试检测服务要容易得多。