如何通过 Linux bash 脚本启动/停止 Windows 服务?

如何通过 Linux bash 脚本启动/停止 Windows 服务?

我想创建一个脚本,该脚本将通过 SSH 服务器启动以启动/停止 Windows 服务。SSH 用户属于管理员组。但是,当我执行该脚本时,出现错误,提示无法启动该服务。

我如何确保我的脚本以管理员权限启动?我在 Linux 中使用 编写了类似的脚本sudo service myservice start/stop。我正在寻找 Windows 中的等效脚本(如果存在的话)。

我的 ps1 shell 看起来像这样:

function start() { Start-Service MyService // verify service started here }

function stop() { Stop-Service MyService // verify service stopped }

function status() { // Return Running/Stopped for MyService }

答案1

我会让 SSH 脚本启动 powershell 脚本。Powershell 能够提升自身权限,然后启动、停止服务并检查其状态。

一些伪代码:

ssh user@server powershell.bat

其中 powershell.bat 具有使用服务执行所需操作所需的所有代码。

答案2

我知道你想使用 bash/ssh,但根据我的经验,从 Linux 机器管理 Windows 的最简单方法是使用 Python 和 WMI

http://timgolden.me.uk/python/wmi/index.html

http://timgolden.me.uk/python/wmi/cookbook.html

http://timgolden.me.uk/python/wmi/tutorial.html

import wmi

# Open a connection to a remote machine
c = wmi.WMI (
computer="other_machine",
user="you",
password="something"
)

# start the service
c.<service>.StartService ()

如果您不需要 BASH/SSH,这将是我所知道的最简单的方法,如果您需要使用 SSH,情况会变得更加复杂,因为现在您需要在要运行此程序的任何机器上安装 Python 和 WMI,在这种情况下,您可能需要使用已在每台机器上安装的语言(VBScript、Powershell 等)。此方法还假设您已在 Windows 机器上启用 WMI 服务,但有些管理员并不喜欢这样做。

Linux 机箱非常适合管理混合环境,但请确保使用正确的工具来完成工作,小刀可以砍倒一棵树,但电锯是用来砍树的。

答案3

开始 =net rpc service start SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

停止 =net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

状态 =net rpc service status SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

如果您的密码包含特殊内容,请使用反斜杠将其转义\

相关内容