如何在命令行中禁用Hyper-V?


106

我正在尝试打开VMware,它表示VMware Player和Hyper-V不兼容。我在这里找到了它,但是使用它提供的命令无法正常工作。

我试图查看帮助,发现那里有/hypervisorsettings选择。它说,但是仍然不能使用它The parameter is incorrect

有人能帮忙吗?


5
我在这里找到了一种工作方式:dism.exe /Online /Disable-Feature:Microsoft-Hyper-Vdism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All,但仍然不知道如何bcdedit工作。
2015年

Answers:


239

提升的命令提示符中输入以下内容:

禁用:

bcdedit /set hypervisorlaunchtype off

启用:

bcdedit /set hypervisorlaunchtype auto 

(摘自评论-重新开始生效)


我什至忘记了这个问题。那时我实际上使用了它,但是没有用。无论如何,现在就可以使用。谢谢。
天空

5
如果您不是特别需要命令行解决方案,而是真正简单快捷的解决方案,则可以使用我的工具Hyper-V Switch,该工具在内部使用bcdedit方法并将一键式GUI置于其上。在我的Windows 10计算机上工作。
ygoe '16

1
确保更改此设置后重新启动计算机
justderb

2
@LukeSkCzEnDeRuPl您可能应该编辑答案,并提到必须在命令后重新启动。
ChrisB

我只是继续并通过在结尾处添加一个句子来编辑答案,提到必须重新启动。
丹·尼森鲍姆

31

该命令有效

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All

运行它,然后同意在出现提示时重新启动计算机。

我在Windows 10上的提升权限的PowerShell中运行了它,但它也应在Win 8或7上运行。


1
有什么方法可以实现而无需重新启动?
rustyx

又如何通过cmd重新启用Hyper-V?谢谢!
statosdotcom

2
此命令会完全删除HyperV功能及其文件和程序。最好禁用bcdedit命令并运行VirtualBox或VMware而不是它。

我的Hyper-V安装决定无缘无故放弃我(我正在运行Windows 10 Pro v1703内部版本15063.786)。我试图通过Windows功能菜单,Powershell和DISM(取消/重新安装)。他们都没有给出错误,但是当我尝试创建/添加新的VM并想完成最后一步时,Hyper-V抛出一个错误,因为对象似乎没有出现,因此它无法打开/访问某些内容。存在(荷兰屏幕截图):i.imgur.com/07hem57.png使用提升的权限/管理员权限运行时的情况与相同。显然不可能完全还原/修复Hyper-V产品/模块...
script'n'code

30

您可以在管理提示下进行Windows 10配置,带有和不带有Hyper-V,如下所示:

bcdedit /copy {current} /d "Windows 10 no Hyper-V"

查找刚刚创建的“ Windows 10 no Hyper-V”引导程序的新ID,例如。{094a0b01-3350-11e7-99e1-bc5ec82bc470}

bcdedit /set {094a0b01-3350-11e7-99e1-bc5ec82bc470} hypervisorlaunchtype Off

重新启动后,您可以在启动时选择是否装有Hyper-V的Windows 10


1
要查找新的ID,请键入“ bcdedit”,然后在添加的引导加载程序配置中查找标识符{XXX}。
user797717

救命 !!!!!!!这样做我的电脑无法启动...整夜都在Windows 10的欢迎屏幕上??????!??
法尔科

您是否在我的示例中替换了ID?
hfmanson

2
如果您在PowerShell上运行此命令,请确保在{current}{GUID}之间放置以下内容" ""{current}"
Nicke Manarin 19-10-21

15

命令行:

dism /online /disable-feature /featurename:microsoft-hyper-v-all

如果有人得到:

我们无法完成更新,正在撤消更改

尝试禁用Hyper-V之后,请尝试从“设备管理器”->“网络适配器”中卸载Hyper-V虚拟网络适配器。


这会导致Windows更新失败,感谢您的信息
Benny

5

以管理员身份打开命令提示符并运行以下命令:

bcdedit /set {current} hypervisorlaunchtype off

重新引导后,仍会安装Hyper-V,但Hypervisor不再运行。现在,您可以毫无问题地使用VMware。

如果再次需要Hyper-V,请以管理员身份打开命令提示符并运行以下命令:

bcdedit /set {current} hypervisorlaunchtype auto

使用bcdedit /set {current} ...over 有什么区别/优势bcdedit /set ...吗?
mwfearnley


2

OP对我来说是最好的答案,看来其他人也已经知道了-All。我设置了两个批处理文件,然后是它们的快捷方式,以便您可以轻松设置它们的“运行方式管理员”权限。

批量关闭

Call dism.exe /Online /Disable-Feature:Microsoft-Hyper-V-All

批处理

Call dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

右键单击->创建桌面快捷方式。右键单击快捷方式->属性->快捷方式选项卡->高级->以管理员身份运行


0

您可以使用我的脚本。将代码行粘贴到记事本并另存为vbs(例如switch_hypervisor.vbs)

Option Explicit

Dim backupfile
Dim record
Dim myshell
Dim appmyshell
Dim myresult
Dim myline
Dim makeactive
Dim makepassive
Dim reboot
record=""
Set myshell = WScript.CreateObject("WScript.Shell")

If WScript.Arguments.Length = 0 Then
    Set appmyshell  = CreateObject("Shell.Application")
    appmyshell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1
    WScript.Quit
End if




Set backupfile = CreateObject("Scripting.FileSystemObject")
If Not (backupfile.FileExists("C:\bcdedit.bak")) Then
    Set myresult = myshell.Exec("cmd /c bcdedit /export c:\bcdedit.bak")
End If

Set myresult = myshell.Exec("cmd /c bcdedit")
Do While Not myresult.StdOut.AtEndOfStream
    myline = myresult.StdOut.ReadLine()

    If myline="The boot configuration data store could not be opened." Then
        record=""
        exit do
    End If
    If Instr(myline, "identifier") > 0 Then
        record=""
        If Instr(myline, "{current}") > 0 Then
            record="current"
        End If
    End If
    If Instr(myline, "hypervisorlaunchtype") > 0 And record = "current" Then
        If Instr(myline, "Auto") > 0 Then
            record="1"
            Exit Do
        End If
        If Instr(myline, "On") > 0 Then
            record="1"
            Exit Do
        End If
        If Instr(myline, "Off") > 0 Then
            record="0"
            Exit Do
        End If
    End If
Loop

If record="1" Then
    makepassive = MsgBox ("Hypervisor status is active, do you want set to passive? ", vbYesNo, "Hypervisor")
    Select Case makepassive
    Case vbYes
        myshell.run "cmd.exe /C  bcdedit /set hypervisorlaunchtype off"
        reboot = MsgBox ("Hypervisor chenged to passive; Computer must reboot. Reboot now? ", vbYesNo, "Hypervisor")
        Select Case reboot
            Case vbYes
                myshell.run "cmd.exe /C  shutdown /r /t 0"
        End Select
    Case vbNo
        MsgBox("Not Changed")
    End Select
End If

If record="0" Then
    makeactive = MsgBox ("Hypervisor status is passive, do you want set active? ", vbYesNo, "Hypervisor")
    Select Case makeactive
    Case vbYes
        myshell.run "cmd.exe /C  bcdedit /set hypervisorlaunchtype auto"
        reboot = MsgBox ("Hypervisor changed to active;  Computer must reboot. Reboot now?", vbYesNo, "Hypervisor")
        Select Case reboot
            Case vbYes
                myshell.run "cmd.exe /C  shutdown /r /t 0"
        End Select
    Case vbNo
        MsgBox("Not Changed")
    End Select
End If

If record="" Then
        MsgBox("Error: record can't find")
End If

2
通常,在回答问题时,应该尝试解释代码段的功能/工作方式。
塞巴斯蒂安·莱纳托维奇

1
@SebastianLenartowicz对我来说不言自明。该脚本只会将hypervisorlaunchtype设置为auto或off,还可以通过bcdedit命令导出当前设置。
user797717
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.