停止/启动具有特定路径的 Windows 服务?

停止/启动具有特定路径的 Windows 服务?

我想创建一些脚本(Windows Batch 或 PowerShell,无论哪个都可以),可以停止和启动 binPath 位于特定文件夹中的服务。这将加快软件调试速度,因为我经常需要停止 4 个服务,修改配置文件,然后再次启动 4 个服务。如果我有一个脚本,只需单击按钮即可停止和启动这些服务,这将真正加快我的工作流程,并且对使用该软件的其他人也很有用。

该软件将从类似以下位置运行:C:\MyProgram,并且 4 个服务将位于C:\MyProgram\bin例如。

我希望当我运行我的脚本时,脚本在 bin 目录内停止、等等service1.exeservice2.exe

是否可以sc stop在 Windows Batch 或Stop-ServicePowerShell 中使用它传递 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
}

这比尝试检测服务要容易得多。

相关内容