Цель: Перезагрузка серверов Hyper-V по расписанию (например после наката обновлений WSUS ).
Описанный ниже алгоритм выполныет две функции
исходные данные:
Windows 2008 R2 + Hyper-V
PowerShell + библиотека функций для Hyper-V James O’Neill
Значения кодов состояний : 2 - start,32769 - save
Import-Module "C:\Program Files\modules\hyperV"
Start-Sleep -s 60
$VMs = Get-WmiObject MSVM_ComputerSystem -computer "." -namespace "root\virtualization"
ForEach ($vm in $Vms)
{
if ( $vm.name -ne $vm.elementname ){
if ( $vm.EnabledState -eq 2 ) {
Suspend-VM $vm -force
Start-Sleep -s 60
}
}
}
cmd /c "shutdown -r -t 15" > log.txt
2. создаем start-hv.ps1
Import-Module "C:\Program Files\modules\hyperV"
Start-Sleep -s 60
$VMs = Get-WmiObject MSVM_ComputerSystem -computer "." -namespace "root\virtualization"
ForEach ($Vm in $Vms)
{
if ( $vm.name -ne $vm.elementname ){
if ( $vm.EnabledState -eq 32769 ) {
Start-VM $Vm -force
Start-Sleep -s 20
}
}
}
3. создаем start-hv.cmd
powershell.exe "& {e:\scripts\start-hv.ps1}"
4. создаем restart-hv.cmd
powershell.exe "& {e:\scripts\restart-hv.ps1}"
5. создаем в планировщике задач простую задачу
Описанный ниже алгоритм выполныет две функции
- переводит все виртуалки, находящиеся в состоянии "Running" в состояние "Save" и пускает хост на перезагрузку
- при запуске Windows стартует все виртуалки, находящиеся в состоянии "Save".
исходные данные:
PowerShell + библиотека функций для Hyper-V James O’Neill
1. создаем restart-hv.ps1
Import-Module "C:\Program Files\modules\hyperV"
Start-Sleep -s 60
$VMs = Get-WmiObject MSVM_ComputerSystem -computer "." -namespace "root\virtualization"
ForEach ($vm in $Vms)
{
if ( $vm.name -ne $vm.elementname ){
if ( $vm.EnabledState -eq 2 ) {
Suspend-VM $vm -force
Start-Sleep -s 60
}
}
}
cmd /c "shutdown -r -t 15" > log.txt
2. создаем start-hv.ps1
Import-Module "C:\Program Files\modules\hyperV"
Start-Sleep -s 60
$VMs = Get-WmiObject MSVM_ComputerSystem -computer "." -namespace "root\virtualization"
ForEach ($Vm in $Vms)
{
if ( $vm.name -ne $vm.elementname ){
if ( $vm.EnabledState -eq 32769 ) {
Start-VM $Vm -force
Start-Sleep -s 20
}
}
}
3. создаем start-hv.cmd
powershell.exe "& {e:\scripts\start-hv.ps1}"
4. создаем restart-hv.cmd
powershell.exe "& {e:\scripts\restart-hv.ps1}"
5. создаем в планировщике задач простую задачу
- запуск программы restart-hv.cmd
- периодичность (раз в неделю более чем достаточно.рекомендую перезагружать хосты Hyper-V в разные дни недели - есть практика косяков после наката обновлений )-
- выполнять с наивысшими правами
- выполнять при невыполненом входе в систему
6. создаем в планировщике задач простую задачу
- запуск программы start-hv.cmd
- выполнять при запуске Windows
- выполнять с наивысшими правами
- выполнять при невыполненом входе в систему
Комментариев нет:
Отправить комментарий