Назад | Перейти на главную страницу

Hyper-V 2012 корректно завершает работу при разрядке батареи ИБП

Задний план:

Мы запускаем пару виртуальных серверов в Hyper-V в небольшом офисе с Windows 2008 R2. У нас есть только 1 физический хост (и мы не планируем его менять в ближайшее время). Мы планируем перейти на Hyper-V Server 2012.

В настоящее время у нас есть небольшой ИБП, который поддерживает работу сервера около 20 минут, а затем отправляет сообщение о завершении работы в Windows 2008. ИБП подключается через USB. Windows 2008 распознает ИБП как аккумулятор, а также есть программное обеспечение от Eaton, которое мы используем для контроля заряда аккумулятора. Когда Windows завершает работу, она также корректно завершает работу виртуальной машины.

Нам не нужны накладные расходы на запуск полной версии Server 2012 только для того, чтобы ИБП выключил сервер, но мы также не хотим, чтобы Active Directory и Exchange внезапно отключились.

Можем ли мы заставить Hyper-V Server 2012 корректно выключить виртуальную машину, когда в ИБП закончится питание?

Сервер Hyper-V, по крайней мере в этом отношении, аналогичен Windows Server, установленному как «Server Core», то есть без графического пользовательского интерфейса. Будет ли работать ваша система мониторинга ИБП в этой среде или нет, будет зависеть от того, сможет ли программное обеспечение Eaton работать в среде без графического интерфейса пользователя и удобно ли вам настраивать эти вещи с помощью инструментов командной строки.

Я бы посоветовал позвонить в Eaton, чтобы спросить их.

Решение, к которому я пришел, заключалось в создании VBScript, который запускается при запуске (с использованием cscript и Task Scheduler).

Сценарий:

set wmi = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\.\root\cimv2")
set batteryColl = wmi.ExecQuery("select * from Win32_Battery")
set osColl = wmi.ExecQuery("select * from Win32_OperatingSystem")

while true
 for each battery in batteryColl
  battery.Refresh_
  if battery.batteryStatus = 1 and battery.EstimatedChargeRemaining <= 25 then
   for each os in osColl
    os.Win32Shutdown 5
   next
  end if
 next
 wscript.Sleep 15000
wend

Кредит:https://social.technet.microsoft.com/Forums/windowsserver/en-US/5cea0070-55f0-4f0e-b727-222203bf0463/hyperv-core-and-ups