Hyper-V와 관련된 컴퓨터의 최근 변경으로이 문제가 발생할 수있는 경우 VMWare 또는 VirtualBox를 사용하는 동안 비활성화해야합니다. 그들은 함께 작동하지 않습니다. Windows Sandbox 및 WSL 2에는 현재 VMWare를 중단하는 Hyper-V Hypervisor가 필요합니다. 기본적으로 다음에 재부팅 할 때 Hyper-V 서비스를 활성화 / 비활성화하려면 다음 명령을 실행해야합니다.
Hyper-V를 비활성화하고 VMWare를 작동하려면 PowerShell에서 Admin으로 :
bcdedit /set hypervisorlaunchtype off
지금은 Hyper-V를 다시 활성화하고 VMWare를 중단하려면 PowerShell에서 Admin으로 :
bcdedit /set hypervisorlaunchtype auto
그 후에 재부팅해야합니다. 이를 토글하고 대화 상자로 확인하는 PowerShell 스크립트를 작성했습니다. 이 기술을 사용하여 관리자에게 자체 승격 되므로 스크립트를 마우스 오른쪽 단추로 클릭하고 실행하여 Hyper-V 모드를 빠르게 변경할 수 있습니다. 재부팅을 위해 쉽게 수정할 수 있지만 개인적으로 그런 일이 일어나기를 원하지 않았습니다. 이것을 hypervisor.ps1로 저장하고 Set-ExecutionPolicy RemoteSigned
PowerShell 스크립트를 실행할 수 있도록 실행했는지 확인합니다 .
# Get the ID and security principal of the current user account
$myWindowsID = [System.Security.Principal.WindowsIdentity]::GetCurrent();
$myWindowsPrincipal = New-Object System.Security.Principal.WindowsPrincipal($myWindowsID);
# Get the security principal for the administrator role
$adminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator;
# Check to see if we are currently running as an administrator
if ($myWindowsPrincipal.IsInRole($adminRole))
{
# We are running as an administrator, so change the title and background colour to indicate this
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)";
$Host.UI.RawUI.BackgroundColor = "DarkBlue";
Clear-Host;
}
else {
# We are not running as an administrator, so relaunch as administrator
# Create a new process object that starts PowerShell
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "PowerShell";
# Specify the current script path and name as a parameter with added scope and support for scripts with spaces in it's path
$newProcess.Arguments = "-windowstyle hidden & '" + $script:MyInvocation.MyCommand.Path + "'"
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess);
# Exit from the current, unelevated, process
Exit;
}
Add-Type -AssemblyName System.Windows.Forms
$state = bcdedit /enum | Select-String -Pattern 'hypervisorlaunchtype\s*(\w+)\s*'
if ($state.matches.groups[1].ToString() -eq "Off"){
$UserResponse= [System.Windows.Forms.MessageBox]::Show("Enable Hyper-V?" , "Hypervisor" , 4)
if ($UserResponse -eq "YES" )
{
bcdedit /set hypervisorlaunchtype auto
[System.Windows.Forms.MessageBox]::Show("Enabled Hyper-V. Reboot to apply." , "Hypervisor")
}
else
{
[System.Windows.Forms.MessageBox]::Show("No change was made." , "Hypervisor")
exit
}
} else {
$UserResponse= [System.Windows.Forms.MessageBox]::Show("Disable Hyper-V?" , "Hypervisor" , 4)
if ($UserResponse -eq "YES" )
{
bcdedit /set hypervisorlaunchtype off
[System.Windows.Forms.MessageBox]::Show("Disabled Hyper-V. Reboot to apply." , "Hypervisor")
}
else
{
[System.Windows.Forms.MessageBox]::Show("No change was made." , "Hypervisor")
exit
}
}