Como Parar uma Máquina Virtual Hyper-V Não Responsiva

Isso não acontece com muita frequência, mas às vezes máquinas virtuais Hyper-V (VM) travarão quando você tentar desligá-las. E você acaba com uma VM no Gerenciador Hyper-V com um status de ‘em desligamento’ que não responde mais e não pode ser forçada a desligar usando os controles normais. Nem mesmo o comando do PowerShell Stop-VM -Force ajuda.

Nesta situação, você precisa ser mais criativo ao desligar a VM. Uma maneira é desligar seu servidor (ou PC, se você estiver usando o Hyper-V para clientes). Mas isso é uma espécie de solução besta. A coisa mais importante que você precisa se quiser forçar uma VM sem resposta a desligar é o GUID da VM. Usando o GUID, você pode encontrar o ID do processo de CPU da VM e matá-lo.

Forçar o desligamento de uma máquina virtual Hyper-V matando seu processo

O uso do método abaixo só é recomendado se a VM não estiver respondendo a um comando de desligamento do Gerenciador Hyper-V ou usando o comando do PowerShell Stop-VM -Force. Os comandos a seguir devem ser executados no Windows PowerShell como administrador local. O método abaixo requer o Windows PowerShell. Não funciona nas versões 6 ou posteriores do PowerShell.

Em uma janela do Windows PowerShell elevada, comece usando Get-VM para encontrar o GUID da VM. Você precisará saber o nome da VM sem resposta para fazer isso. Se precisar confirmar o nome da VM, basta executar Get-VM para ver uma lista de todas as VMs em execução no dispositivo.

Quando o AD está inativo, cada minuto é importante

A recent survey revealed 94% of organizations can’t recover their Active Directory (AD) forest in minutes. Cayosoft offers the only instant AD forest recovery.

Learn More

Get-VM

Quando você tiver o nome da VM, execute o comando abaixo, substituindo “Windows 11” pelo nome da VM que deseja parar:

$VmGUID = (Get-VM 'Windows 11').id

O próximo passo é usar Get-WMIObject para encontrar a ID do processo da VM. Aqui, utilizamos o namespace Windows Management Instrumentation (WMI) Win32_Process para localizar um processo de CPU em execução que corresponda a vmwp.exe e ao GUID ($VmGUID) da nossa máquina virtual.

$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})

Uma vez que temos a ID do processo ($VMWMProc), podemos usar o cmdlet Stop-Process para encerrá-lo:

Stop-Process ($VMWMProc.ProcessId) –Force
How to Stop an Unresponsive Hyper-V Virtual Machine (Image Credit: Russell Smith)

Forçar todas as VMs a desligarem

Outra maneira de forçar uma VM que não está respondendo a desligar é parar o serviço Hyper-V. Mas esse método irá desligar à força todas as VMs em execução no seu servidor. Assim como no método anterior, você precisa executar o seguinte comando em uma janela do PowerShell elevada, ou seja, uma que tenha privilégios de administrador local.

Get-Service vmms | Restart-Service

A reinicialização do serviço Hyper-V (vmms) pode demorar um pouco. Portanto, não se preocupe se levar vários minutos para parar e reiniciar.

Artigos relacionados:

Source:
https://petri.com/how-to-stop-an-unresponsive-hyper-v-virtual-machine/