가끔은 Hyper-V 가상 머신 (VM)이 종료되려고 할 때 멈추는 경우가 있습니다. 그 결과로 Hyper-V 관리자에서 ‘종료 중’ 상태의 VM이 더 이상 응답하지 않고 일반적인 제어로 강제 종료되지 않는 문제가 발생합니다. 심지어 PowerShell Stop-VM -Force 명령어도 도움이 되지 않습니다.
이러한 상황에서는 VM을 종료하는 데 더 창의적이어야 합니다. 하나의 방법은 서버를 종료하는 것입니다(클라이언트 Hyper-V를 사용 중이라면 PC). 하지만 이는 억압적인 해결책입니다. 응답하지 않는 VM을 강제로 종료하려면 VM의 GUID가 필요합니다. GUID를 사용하여 VM의 CPU 프로세스 ID를 찾아 강제 종료할 수 있습니다.
프로세스를 종료하여 Hyper-V 가상 머신을 강제로 종료
아래 방법은 Hyper-V 관리자에서 종료 명령 또는 PowerShell Stop-VM -Force 명령에 응답하지 않는 경우에만 권장됩니다. 다음 명령어는 로컬 관리자로서 Windows PowerShell에서 실행해야 합니다. 아래 방법은 Windows PowerShell이 필요합니다. PowerShell 6 이상 버전에서는 작동하지 않습니다.
승격된 Windows PowerShell 프롬프트에서 응답하지 않는 VM의 GUID를 찾기 위해 Get-VM을 사용하여 시작하십시오. 이를 위해 응답하지 않는 VM의 이름을 알아야 합니다. VM의 이름을 확인해야 하는 경우 모든 장치에서 실행 중인 VM 목록을 보려면 Get-VM을 실행하면 됩니다.
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
VM 이름이 확인되면 아래 명령을 실행하고, ‘Windows 11’을 종료하려는 VM의 이름으로 교체하세요:
$VmGUID = (Get-VM 'Windows 11').id
다음 단계는 Get-WMIObject를 사용하여 VM의 프로세스 ID를 찾는 것입니다. 여기서는 우리의 가상 머신의 vmwp.exe 및 GUID ($VmGUID)와 일치하는 실행 중인 CPU 프로세스를 찾기 위해 Win32_Process Windows Management Instrumentation (WMI) 네임스페이스를 사용합니다.
$VMWMProc = (Get-WMIObject Win32_Process | ? {$_.Name -match 'VMWP' -and $_.CommandLine -match $VmGUID})
프로세스 ID ($VMWMProc)를 갖게 되면 Stop-Process cmdlet을 사용하여 그것을 종료할 수 있습니다:
Stop-Process ($VMWMProc.ProcessId) –Force
모든 VM을 강제 종료
응답이 없는 VM을 강제로 종료시키는 다른 방법은 Hyper-V 서비스를 중지하는 것입니다. 그러나 이 방법은 서버에서 실행 중인 모든 VM을 강제로 종료합니다. 이전 방법과 마찬가지로 다음 명령을 관리자 권한이 있는 PowerShell 창에서 실행해야 합니다, 즉 로컬 관리자 권한이 필요합니다.
Get-Service vmms | Restart-Service
Hyper-V 서비스 (vmms)를 다시 시작하는 데 많은 시간이 걸릴 수 있습니다. 따라서 종료하고 다시 시작하는 데 몇 분이 걸린다면 걱정하지 마세요.
관련 기사:
Source:
https://petri.com/how-to-stop-an-unresponsive-hyper-v-virtual-machine/