从Linux机箱重新启动Windows服务

时间:2009-07-28 17:47:57

标签: windows windows-services

我们有一个糟糕的遗留Windows应用程序(已经讨论过here),它将内容从Windows主机复制到许多Linux主机。我们在几个盒子上运行它的几个实例。每个实例都有自己的.ini文件,其中包含列表目标服务器。通常我们需要更改这些文件的内容并重新启动流程,这个流程由我们的运营团队手工完成。我想用一个简单的基于Web的实用程序(在Linux主机上运行)替换它,它允许用户生成配置文件,将它们发送到主机并重新启动服务。生成文件很简单 - 我可能使用Perl和Template Toolkit - 并且由于服务器导出其配置目录,因此复制数据也相对容易。

重启Windows服务有哪些选择? Win32::Service?我没有机会看起来很远,所以如果你说“x::y让这很容易,但要注意z”你会节省我很多时间。它甚至可能吗?或者,也许你可以建议一个更好的方法来解决这个问题(遗憾地更换软件不是一个!)我不是想偷懒,只是避免浪费时间摆弄可能不会做我想要的模块。

7 个答案:

答案 0 :(得分:3)

Ubuntu包含一个可以帮助管理Windows系统的实用程序wmic - WMI Client。有了适当的权限,WMI可以轻松停止和启动Windows服务。

(手册页中的示例,而非服务控制。)

  

实施例

     

wmic -U [domain /] adminuser%password // host“select * from Win32_ComputerSystem”

答案 1 :(得分:2)

Winexe可以做到这一点;它是Linux等同于Sysinternal非常有用的PsExec工具。

上次我使用Winexe是在几年前,所以这可能已经改变,但当时有几个警告:

  • 终端处理没有很好地实现,因此在远程命令中键入非字母数字键可能很奇怪。如果你是脚本,这应该不是问题。
  • 与PsExec一样,Winexe通过在Windows框中安装服务然后告诉该服务运行命令来运行。与PsExec不同,它之后没有清理服务。安装的服务是无害的,并且在Winexe没有做任何事情时都不会运行,所以这几乎是无害的。

答案 2 :(得分:2)

您可以使用Winexe

$ winexe -U HOME/Administrator%'Pass123' //host 'cmd /C net stop wuauserv && net start wuauserv && echo AutoUpdates service restarted'

密码是在''< - 手册之间写的,不要说这个,但是有效。

答案 3 :(得分:1)

您可以使用以下命令从Windows命令行重新启动Windows服务:

net stop service_name
net start service_name

您可以通过单击“服务”窗口中的属性找到服务名称。

这可以让你编写脚本。

答案 4 :(得分:0)

最具体的方法是构建一个处理ini更新和重新启动服务的Web服务,但鉴于这是一个内部解决方案,可能会造成大量过度杀伤。

答案 5 :(得分:0)

我通常远程启用telnet,远程登录,并使用“net stop ServiceName”和“net start ServiceName”。

答案 6 :(得分:0)

尝试使用

{{1}}