我有一个在 CherryPy 服务器中运行的 Python Web 应用程序,该服务器作为 Windows 服务运行。我有一个批处理文件来部署这个应用程序,但我仍然需要远程桌面到服务器来重新启动服务。有没有办法编写这个脚本?
我试过了:
psexec \\server "net restart cherrypyservice"
但这似乎不起作用。
我有一个在 CherryPy 服务器中运行的 Python Web 应用程序,该服务器作为 Windows 服务运行。我有一个批处理文件来部署这个应用程序,但我仍然需要远程桌面到服务器来重新启动服务。有没有办法编写这个脚本?
我试过了:
psexec \\server "net restart cherrypyservice"
但这似乎不起作用。
您可以使用 sc 命令行工具,但我不知道如何在 python 中专门执行此操作。
https://stackoverflow.com/questions/133883/stop-and-start-a-service-via-batch-or-cmd-file/133926#133926
描述:SC 是一个命令行程序,用于与 NT 服务控制器和服务进行通信。用法:sc [命令] [服务名称] ...
示例:sc 启动 MyService
使用 Russinovich 的psservice:
如果你想使用 psexec:
虽然在这种情况下,建议使用 sc。如果您要掏钱,它可以满足您的一切需求。
尝试
使用您喜欢的任何远程执行引擎。
如果您有一台在计算机上启用了 WinRM 的服务器,并且您从中部署批处理文件的 PC 被添加到服务器的 WinRM 受信任主机,您可以使用 Invoke-Command
您使用 Invoke-Command 触发批处理文件。
我个人在尝试在多个 windows 服务器上进行操作时使用 Invoke-Command。
希望能帮助到你 :)
交互式使用 PowerShell(本地):
以交互方式(远程)使用 PowerShell:
在一个函数中(远程):
使用 WMI 方法
(Get-WmiObject win32_service -computer stp7cor1737ltv4 -filter "Name='SPtimerv3'").invokemethod("StartService",$null)
(其中 psservice 是另一个 SysInternals 应用程序)
或者
写一个bat文件:
网络停止“服务名称”
网络启动“服务名称”
您可以使用以下命令在主机上远程执行文件:
psexec \\主机名 -c batfile.bat