PowerShell · 06.06.2022

Оживить зависшую машину Hyper-V

Конечно, случай достаточно редкий, но случается: виртуальная машина Hyper-V впадает в апатию при переходе из одного состояния в другое. Любые попытки выключить или завершить работу конкретной виртуальной машины приводят к ошибке и совершенно ничего с этим нельзя поделать.

По крайней мере, штатными средствами.

Можно попробовать остановить процесс зависшей виртуальной машины с помощью PowerShell.

При запуске скрипт спросит имя виртуальной машины и дальше сделает всё сам. Обработчик ошибок не прикручивал. Скрипт будет ждать реакции пользователя по факту выполнения.

### Заголовок скрипта ###
[System.Console]::Title = "Перезапуск зависшей виртуальной машины"

### Запрос имени виртуальной машины ###
$VMNAME = Read-Host "Введите имя виртуальной машины"

### Получение ID виртуальной машины ###
$VMID = (Get-VM $VMNAME).ID

### Поиск процесса экземпляра виртуальной машины ###
$VMWP = (Get-WmiObject Win32_Process | Where-Object {$_.Name -match 'VMWP' -and $_.CommandLine -match $VMID})

### Остановка процесса виртуальной машины ###
Stop-Process ($VMWP.ProcessId) –Force

### Ожидание действия от пользователя ###
Read-Host "Нажмите Enter для выхода..."

Скрипт следует выполнять только с правами администратора!

Вместо P.S.: ну, а если Вы не любите хирургические методы решения задач — можно просто перезапустить службу управления виртуальными машинами одной командой:

Get-Service vmms | Restart-Service

Данный функционал внедрён в RDPman.