如何检测Windows服务器重启后是否可用?
我想使用任务计划程序或类似工具自动执行 Windows 2000+ 服务器重新启动过程,以远程重新启动服务器并等待其恢复。 我可以发出 shutdown
或 psshutdown
来远程重新启动,但我想要比 sleep
更好的方法来等待它回来。 我需要验证它在 n
分钟内重新上线,否则会抛出错误。
通过“重新上线”,我不仅想验证它是否可以 ping 通,还想验证它的 RFC 服务是否正在响应或其他一些确定的生命体征。
我更喜欢 NT 脚本方法,但我不排除编写自定义工具来执行此操作。
有任何想法吗?
I want to automate a Windows 2000+ server reboot process using Task Scheduler or similar tool to remotely reboot a server and wait for it to come back up. I can issue shutdown
or psshutdown
to remotely reboot, but I want something better than sleep
to wait for it to come back. I need to verify it is back online within n
minutes or throw an error.
By 'back online', I would like to verify more than just that it can be pinged, but perhaps its RFC service is responding or some other determinate vital sign.
I'd prefer an NT script approach, but I'm not ruling out writing a custom tool to do this.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
经过一段时间的研究,我想出了以下 VBScript。 请随意发表评论/改进。
After working on this for a while, I came up with the following VBScript. Feel free to comment/improve.
您的远程重启脚本可以启动服务器,等待 n 分钟,然后查询您的 RFC 服务。 您也可以让服务器上的本地脚本执行相同的操作。
Your remote restart script could start the server, wait n minutes, then query your RFC service. You could also have a local script on the server do the same thing.
您可以使用 psservice 查询 RFC 或 Print Spooler 的状态服务。 后台处理程序通常是最后启动的服务之一。 您可以使用如下语法:
一旦服务运行,就会返回类似的内容。
如果另一台机器还没有准备好,你会得到类似的信息
You could use psservice to query the status of the RFC or Print Spooler services. The Spooler is usually one of the last services to start. You could use syntax like:
That will return something like this once the service is running.
If the other machine is not ready, you'll get something like
使用 VBScript (WSH),您可以使用 .state 属性进行检查。 此脚本显示该属性在不同的应用程序中使用,但应该有助于说明这个想法:
http://www.robvanderwoude.com/vbstech_proc_service.html robvanderwoude.com/vbstech_proc_service.html
With VBScript (WSH) you could check it with the .state property. This script shows that property being used in a different application but should help illustrate the idea:
http://www.robvanderwoude.com/vbstech_proc_service.html
使用 nmap 获取机器上开放的服务列表并解析结果以确定您需要什么活跃。 确保您不需要需要的东西未处于活动状态也很有用。
Use nmap to get a list of open services on the machine and parse the results to make sure what you need is active. It's also useful to make sure that things you don't need are not active.
您可以轮询一些核心服务以查看它是否已启动:
You can poll some core service to see if it has started:
这里的关键是我需要编写这个脚本。 是否有更简洁的方法从
psservice
/sc query
中提取服务状态? 我可以将其通过管道传输到findstr "RUNNING"
,但必须有更好的方法。The key here is I need to script this. Is there a cleaner way to extract the service status from
psservice
/sc query
? I'm able to pipe it tofindstr "RUNNING"
, but there's got to be a better way.