No sucede tan a menudo, pero a veces las máquinas virtuales Hyper-V (VM) se cuelgan al intentar apagarlas. Y te encuentras con una VM en Administrador de Hyper-V con un estado de ‘Apagando’ que ya no responde, y no puede ser forzada a apagarse utilizando los controles normales. Incluso el comando Stop-VM -Force de PowerShell no ayuda.
En esta situación, necesitas ser más creativo/a para apagar la VM. Una forma es apagar tu servidor (o PC si estás utilizando Hyper-V de cliente). Pero eso es algo así como una solución a martillazos. Lo más importante que necesitas si quieres forzar el apagado de una VM que no responde, es el GUID de la VM. Utilizando el GUID, puedes encontrar el ID de proceso de la CPU de la VM y finalizarlo.
Forzar el apagado de una máquina virtual de Hyper-V matando su proceso
Utilizar el método que se detalla a continuación solo se recomienda si la VM no responde a un comando de apagado desde el Administrador de Hyper-V o utilizando el comando Stop-VM -Force de PowerShell. Los siguientes comandos deben ejecutarse en Windows PowerShell como administrador local. El método a continuación requiere Windows PowerShell. No funciona en PowerShell 6 o versiones más recientes.
En un símbolo del sistema de Windows PowerShell elevado, comienza utilizando Get-VM para encontrar el GUID de la VM. Necesitarás conocer el nombre de la VM que no responde para hacer esto. Si necesitas confirmar el nombre de la VM, simplemente ejecuta Get-VM para ver una lista de todas las VM que se están ejecutando en el dispositivo.
Cuando AD está caído, cada minuto cuenta
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.
Get-VM
Una vez que tengas el nombre de la MV, ejecuta el siguiente comando, reemplazando ‘Windows 11’ con el nombre de la MV que deseas detener:
$VmGUID = (Get-VM 'Windows 11').id
El siguiente paso es utilizar Get-WMIObject para encontrar el ID del proceso de la MV. Aquí utilizamos el espacio de nombres de Instrumentación de Windows Management (WMI) Win32_Process para encontrar un proceso de CPU en ejecución que coincida con vmwp.exe y el GUID ($VmGUID) de nuestra máquina virtual.Una vez que tenemos el ID del proceso ($VMWMProc), podemos utilizar el cmdlet Stop-Process para finalizarlo:
$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
Forzar el apagado de todas las MVs
Stop-Process ($VMWMProc.ProcessId) –Force
Otra forma de forzar el apagado de una MV que no responde es detener el servicio Hyper-V. Pero este método apagará todas las MVs en ejecución en tu servidor de forma forzada. Al igual que con el método anterior, necesitas ejecutar el siguiente comando en una ventana de PowerShell elevada, es decir, una que tenga privilegios de administrador locales.
Reiniciar el servicio de Hyper-V (vmms) puede llevar bastante tiempo. Así que no te preocupes si tarda varios minutos en detenerse y luego reiniciarse de nuevo.
Get-Service vmms | Restart-Service
Artículos relacionados
:
Source:
https://petri.com/how-to-stop-an-unresponsive-hyper-v-virtual-machine/