我真的很喜欢Windows 8中对Hyper-V的支持,但是在某些情况下,我需要禁用Hyper-V才能运行某些即使在虚拟化环境的根分区中也不愿意执行的应用程序。
我目前正在做的是从“添加或删除Windows功能”对话框中完全禁用该功能,然后重新启动,并在需要时再次启用它。
我想知道是否有更好的方法可以想到,它甚至可以是快捷方式,我可以双击它并为我添加或删除该功能并重新启动(我想这可能是可行的。 PowerShell脚本)。
我真的很喜欢Windows 8中对Hyper-V的支持,但是在某些情况下,我需要禁用Hyper-V才能运行某些即使在虚拟化环境的根分区中也不愿意执行的应用程序。
我目前正在做的是从“添加或删除Windows功能”对话框中完全禁用该功能,然后重新启动,并在需要时再次启用它。
我想知道是否有更好的方法可以想到,它甚至可以是快捷方式,我可以双击它并为我添加或删除该功能并重新启动(我想这可能是可行的。 PowerShell脚本)。
Answers:
免责声明:我尚未完成删除功能的操作,作为最后的告诫,每次您再次启用它时,可能都会安装大量Windows Update更新。
话虽如此,在提升的命令提示符下:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
和
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
这是在已启用并正在运行Hyper-V的PC上运行enable命令的样子:
> dism /在线/启用功能:Microsoft-Hyper-V /全部
部署映像服务和管理工具版本:6.2.9200.16384
图像版本:6.2.9200.16384
启用功能[========================== 100.0%================ ==========]操作成功完成。
由于是Hyper-V而启用该功能时,它可能会要求您重新启动并再次运行该命令。似乎有些陌生。换句话说,您可能不得不重新启动两次。但是也许它不会对您有用,因为该机器之前已经启用了Hyper-V。
/NoRestart
在非交互式设置中使用(从脚本调用时)。
bcdedit
是更快的方法,并且是唯一必要的操作(无论如何,您仍然必须重新启动)。这就是我需要切换到VMWare时所做的事情。
这是一个古老的答案,但出于完整性考虑,因为我知道有比最佳结果更好的方法。
在提升的命令提示符下:
bcdedit /set hypervisorlaunchtype off
禁用管理程序,并:
bcdedit /set hypervisorlaunchtype auto
重新启用它(默认值)。
当然,它仍然需要重新启动。
bcdedit /copy {default} /d "No Hypervisor"
"The entry was successfully copied to {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}."
bcdedit /set {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} hypervisorlaunchtype off
bcdedit /set "{current}" hypervisorlaunchtype off
Shift
在单击时按住该键Start -> Power button -> Restart
,这将使您能够选择在计算机重新启动之前是否启用Hyper-V进行引导。当在BIOS中启用某种形式的“ fastboot”并且在Windows bootloader接管控制权之前几乎无法敲击“ enter BIOS”键时,此功能特别有用。
Powershell也可以使用包装为PS cmdlet的DISM,并且可以在进行更改之前先读取设置。
//Test
PS> Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
//Turn off
PS> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
//Turn on
PS> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V –All
参考
您可以使用Hyper-V交换机,该交换机基本上采用此处已经描述的bcdedit方法,但是在其上放置了一个简单的一键式GUI。它显示您当前的配置状态,并允许您启用或禁用Hyper-V并重新引导计算机。我已经制作了这个小工具,并且可以在Windows 10计算机上使用。
我制作了一个PowerShell脚本来帮助启用/禁用Hyper-V。这会检查状态,因此如果您已经处于所需状态,则不会重新启动:
param([string]$state='Off')
'Set Hyper-V ' + $state
$lines = bcdedit
ForEach($line in $lines) {
$pos = $line.IndexOf(' ')
If($pos -gt 0) {
$prompt = $line.Substring(0, $pos)
$curstate = $line.Substring($pos).Trim()
If($prompt -eq 'hypervisorlaunchtype') {
'[' + $prompt + '] = [' + $curstate + ']'
If($curstate -ne $state) {
'Setting hypervisorlauchtype to ' + $state
$result = bcdedit /set hypervisorlaunchtype $state
'Result = [' + $result + ']'
If($result -eq 'The operation completed successfully.') {
'Restarting in two seconds'
Start-Sleep -s 2
Restart-Computer
} Else {
'Error setting state'
Start-Sleep -s 5
}
} Else {
'Hypervisor launch type is already ' + $state
Start-Sleep -s 5
}
}
}
}
然后在桌面“ Hyper-V Off”目标上创建两个快捷方式:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Scripts\SetHyper-V.ps1 -state Off
和“ Hyper-V开”目标:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Scripts\SetHyper-V.ps1 -state Auto`
清理和整理Windows组件存储(WinSxS)
Dism /Online /Cleanup-Image /RestoreHealth Dism.exe /online /Cleanup-Image /StartComponentCleanup
分析系统文件并根据需要还原
sfc /scannow
(根据https://ugetfix.com/ask/how-to-disable-hyper-v-in-windows-10/)
bcdedit /set {current} hypervisorlaunchtype off
(来源:https://blogs.technet.microsoft.com/gmarchetti/2008/12/07/turning-hyper-v-on-and-off/)
Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
(来源:https : //ugetfix.com/ask/how-to-disable-hyper-v-in-windows-10/和 https://support.microsoft.com/en-us/help/3204980/virtualization-应用程序无法与超级v设备一起工作g)
为了完整起见,某些虚拟化问题与Device Guard和Credential Guard安全功能有关:
mmc.exe,在“计算机配置” /“管理模板” /“系统” /“设备保护” /“基于虚拟化的安全性”下添加管理单元本地计算机策略
设置/更新和安全性/ Windows安全性/设备安全性/核心隔离中的核心隔离
(参考:https://support.microsoft.com/zh-cn/help/3204980/virtualization-applications-do-not-work-together-with-hyper-v-device-g
https://www.tenforums.com/tutorials/68913-enable-disable-device-guard-windows-10-a.html ; https://blogs.technet.microsoft.com/ash/2016/03/02/windows-10-device-guard-and-credential-guard-demystified/
https://weblogs.asp.net/dixin/run-hyper-v-and-vmware-virtual-machines-on-windows-10