Il n’arrive pas souvent mais parfois les machines virtuelles Hyper-V (VM) se bloquent lors de leur arrêt. Et vous vous retrouvez avec une VM dans le Gestionnaire Hyper-V avec un statut « Arrêt en cours » qui ne répond plus, et il est impossible de forcer son arrêt en utilisant les commandes normales. Même la commande PowerShell Stop-VM -Force ne fonctionne pas.
Dans cette situation, vous devez faire preuve de créativité pour arrêter la VM. Une méthode consiste à arrêter votre serveur (ou votre PC si vous utilisez Hyper-V client). Mais c’est un peu radical comme solution. L’élément le plus important dont vous avez besoin pour forcer l’arrêt d’une VM non responsive, est le GUID de la VM. En utilisant le GUID, vous pouvez trouver l’ID du processus CPU de la VM et le terminer.
Forcer l’arrêt d’une machine virtuelle Hyper-V en arrêtant son processus
L’utilisation de la méthode ci-dessous est recommandée uniquement si la VM ne répond pas à une commande d’arrêt depuis le Gestionnaire Hyper-V ou en utilisant la commande PowerShell Stop-VM -Force. Les commandes suivantes doivent être exécutées dans Windows PowerShell en tant qu’administrateur local. La méthode ci-dessous nécessite Windows PowerShell. Elle ne fonctionne pas dans PowerShell 6 ou les versions ultérieures.
Dans une invite Windows PowerShell élevée, commencez par utiliser Get-VM pour trouver le GUID de la VM. Vous devrez connaître le nom de la VM non responsive pour cela. Si vous devez confirmer le nom de la VM, exécutez simplement Get-VM pour voir la liste de toutes les VM en cours d’exécution sur l’appareil.
Quand AD est en panne, chaque minute compte
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
Une fois que vous avez le nom de la machine virtuelle, exécutez la commande suivante, en remplaçant « Windows 11 » par le nom de la machine virtuelle que vous souhaitez arrêter :
$VmGUID = (Get-VM 'Windows 11').id
L’étape suivante consiste à utiliser Get-WMIObject pour trouver l’ID de processus de la machine virtuelle. Ici, nous utilisons l’espace de noms Windows Management Instrumentation (WMI) Win32_Process pour trouver un processus CPU en cours d’exécution qui correspond à vmwp.exe et à l’GUID ($VmGUID) de notre machine virtuelle.
$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
Une fois que nous avons l’ID de processus ($VMWMProc), nous pouvons utiliser l’applet de commande Stop-Process pour le tuer :
Stop-Process ($VMWMProc.ProcessId) –Force
Forcer l’arrêt de toutes les machines virtuelles
L’autre façon de forcer l’arrêt d’une machine virtuelle qui ne répond pas est d’arrêter le service Hyper-V. Mais cette méthode arrêtera de force toutes les machines virtuelles en cours d’exécution sur votre serveur. Tout comme avec la méthode précédente, vous devez exécuter la commande suivante dans une fenêtre PowerShell élevée, c’est-à-dire avec des privilèges d’administrateur local.
Get-Service vmms | Restart-Service
Le redémarrage du service Hyper-V (vmms) peut prendre un certain temps. Ne vous inquiétez donc pas si cela prend plusieurs minutes pour l’arrêter, puis le redémarrer.
Articles connexes :
Source:
https://petri.com/how-to-stop-an-unresponsive-hyper-v-virtual-machine/