任务计划程序和虚拟机监视

我正在寻找这个穷人的监控解决scheme。 我有一个Hyper-V 2008 R2环境,非高峰时段的电源波动非常普遍。 电池使箱子保持相当长的时间。 我正在开发一个解决scheme,将电池问题closures命令提供给一个最佳解决scheme,但我希望获得一个简单的监视解决scheme来监视虚拟机的状态。

基本上是这样的:

  1. 权力走出。
  2. 电力最终恢复。
  3. 服务器自动重新启动(打开电源恢复)。
  4. 虚拟机应该重新启动(从closures或基于Hyper-V中的设置保存)。
  5. 任务计划程序每隔一小时左右运行一次任务,并检查未启动的虚拟机。
  6. 如果机器没有启动,它会发送一条消息,更喜欢SMTP来提醒某人检查它。

我不确定如何最好地完成对虚拟机的检查。 我是否发出具有返回代码的CLI或PS脚本,然后任务调度程序可以作出决定或使用其他方法?

我正在寻找使用内置的Windows工具,因为这看起来应该是可以实现的东西。 如果不是很好,候选人也很棒。 是的,我想要一个自由的方式来做到这一点。 不想在这里花任何现金,或者像Nagios这样的巨大工具来处理这个看似小的问题。

如果我疯了,那也可以!

我会在Powershell中做所有事情。 我写了一个脚本,回来做一些穷人的负载平衡。 它调用一些CLI代码来返回虚拟机的状态,并相应地执行。

您也可以这样做:让Powershell调用一个CLI语句(使用getstate)来获取各种访客虚拟机的状态。 如果它们中的任何一个都closures了,可以启动一个SMTP电子邮件或者使用CLI来启动虚拟机或者其他什么。

按照您select的时间间隔,按计划的任务启动Powershell。 应该像魅力一样工作。

看来在Windows Server的早期版本(2012之前版本)中,不包括PowerShell模块来pipe理Hyper-V。 您可以使用其他一些模块,如故障转移群集等,但您必须使用WMI脚本来更改pipe理程序。

在2012年,这个问题很简单:

PS C:\> Get-VM –ComputerName Server1 | Where-Object {$_.State –eq 'Running'}

但是,似乎有一个开源库提取WMI脚本并将所有内容保留在PowerShell中。 我今晚会看看这个模块,看看我能不能做到我想要的。

感谢Bob至less指引我朝着正确的方向前进。