从脚本重新启动 Windows 服务?

从脚本重新启动 Windows 服务?

我知道关于这个主题有几篇类似的帖子,但我想知道如何重新启动已停止的服务。有没有。蝙蝠或者.vbs脚本会检查服务是否停止,如果服务停止则重新启动并循环运行?

感谢您的帮助!

更新于 2012 年 9 月 7 日 @ 11.25 我知道有几篇帖子详细介绍了SCnet stop&的使用方法net start,其中大多数帖子都是先停止服务,然后重新启动。我正在处理已经崩溃或停止的服务,我需要检查它是否已停止,然后重新启动它。我希望我说得更清楚。如果能附上一个日志文件就更好了。

答案1

例如,创建批处理文件 C:\derp.bat

批处理文件的内容可能如下所示:

net start "Service Name"

C:\derp.bat

第一行:如果服务已在运行,则不会发生任何事情。如果未运行,则将尝试启动。

第二行:重新启动批处理文件。

如果您希望每 60 秒尝试一次,您可以在中间放置一个 ping 127.0.0.1 -n 60。

答案2

在 PowerShell 中启动服务非常简单(使用后台处理程序作为示例):

Start-Service spooler

您还可以通过以下方式检查服务是否正在运行,如果没有运行,则重新启动它:

$Service = Get-Service -Name spooler
if ($Service.Status -ne "Running")
{         
    (Get-Date).ToString() + " - Service stopped." >> C:\Scripts\log.txt
    Start-Service spooler
}

但是,我不建议无限循环脚本。一个快速而粗略的解决方案是将此脚本设置为使用计划任务每​​隔一段时间运行一次。

编辑:添加一行以将条目添加到日志文件。

答案3

从你阅读评论后所问的问题来看,只要得到这个并完成即可:

http://www.netwrix.com/windows_services_monitoring_freeware.html

NetWrix Service Monitor 是一款免费工具,用于监控关键 Windows 服务并在发生故障后选择性地重新启动它们。该工具可同时监控多台服务器上的所有自动启动服务,并在一个或多个服务意外停止时发送电子邮件警报。可选的自动重新启动功能可确保所有受监控的服务正常运行而不会停机。该工具轻量级且非常易于配置:安装、输入计算机名称并提供您的电子邮件地址。

特点和优点:

One installation watches multiple computers at a time;
Monitors all Windows services with startup type set to Automatic;
Sends alerts by e-mail when services stop or fail to start at boot time;
Optionally starts failed services;
Optionally reboots computers when one or more services fail;
Available at absolutely no cost.

我们使用 WUG,其他人使用 NAGIOS、Zenoss 等等……但以上是免费的并且针对您的问题。

答案4

试试这个。如果服务已在运行,它将重新启动服务。否则,将启动它。

sc stop "MyService" && sc start "MyService" || sc start "MyService"

相关内容