วิธีปิดใช้งาน Hyper-V ในบรรทัดคำสั่ง


107

ฉันกำลังพยายามเปิด VMware มันแจ้งว่า VMware player และ Hyper-V เข้ากันไม่ได้ ฉันพบที่นี่แต่มันใช้งานไม่ได้เมื่อใช้คำสั่งที่มีให้

ฉันลองดูวิธีใช้พบว่ามี/hypervisorsettingsตัวเลือกที่นั่น The parameter is incorrectแต่ก็ยังไม่ได้ทำงานกับมันมันบอกว่า

ใครสามารถช่วยเรื่องนี้?


5
ฉันพบวิธีการทำงานที่นี่: dism.exe /Online /Disable-Feature:Microsoft-Hyper-Vและdism.exe /Online /Enable-Feature:Microsoft-Hyper-V /Allแต่ยังไม่รู้วิธีการbcdeditทำงาน
ท้องฟ้า

คำตอบ:


245

ในพรอมต์คำสั่งที่ยกระดับให้เขียนสิ่งนี้:

ในการปิดใช้งาน:

bcdedit /set hypervisorlaunchtype off

การเปิดใช้งาน:

bcdedit /set hypervisorlaunchtype auto 

(จากคอมเมนต์ - รีสตาร์ทเพื่อมีผล)


ฉันลืมคำถามนี้ไปแล้วด้วยซ้ำ ฉันใช้สิ่งนี้จริงในตอนนั้น แต่มันไม่ได้ผล อย่างไรก็ตามมันใช้งานได้แล้ว ขอบคุณ.
ท้องฟ้า

5
ในกรณีที่คุณไม่ต้องการโซลูชันบรรทัดคำสั่งโดยเฉพาะ แต่เป็นเพียงสิ่งที่ง่ายและรวดเร็วจริงๆคุณอาจใช้เครื่องมือHyper-V Switchของฉันที่ใช้วิธี bcdedit ภายในและวาง GUI ในคลิกเดียว ทำงานบนคอมพิวเตอร์ Windows 10 ของฉัน
ygoe

1
ตรวจสอบให้แน่ใจว่าคุณรีสตาร์ทคอมพิวเตอร์หลังจากเปลี่ยนการตั้งค่านี้แล้ว
justderb

2
@LukeSkCzEnDeRuPl คุณควรแก้ไขคำตอบของคุณและระบุว่าคุณต้องรีบูตหลังจากคำสั่ง
ChrisB

ฉันเพิ่งดำเนินการแก้ไขคำตอบโดยเพิ่มประโยคต่อท้ายโดยระบุว่าจำเป็นต้องรีสตาร์ท
Dan Nissenbaum

31

คำสั่งนี้ใช้งานได้

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

เรียกใช้จากนั้นตกลงที่จะรีสตาร์ทคอมพิวเตอร์เมื่อได้รับแจ้ง

ฉันใช้งานด้วยสิทธิ์ระดับสูง PowerShell บน Windows 10 แต่ควรใช้กับ Win 8 หรือ 7 ด้วย


1
มีวิธีใดบ้างที่จะทำได้โดยไม่ต้องรีบูต
rustyx

แล้วการเปิดใช้งาน Hyper-V อีกครั้งผ่าน cmd ล่ะ? ขอบคุณ!
statosdotcom

2
คำสั่งนี้จะลบคุณลักษณะ HyperV อย่างสมบูรณ์ด้วยไฟล์และโปรแกรม คำสั่ง bcdedit ดีที่สุดในการปิดใช้งานและเรียกใช้ VirtualBox หรือ VMware แทนคำสั่ง

การติดตั้ง Hyper-V ของฉันตัดสินใจยอมแพ้โดยไม่มีเหตุผล (ฉันใช้ Windows 10 Pro v1703 build 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"

ค้นหารหัสใหม่ของ bootentry "Windows 10 no Hyper-V" ที่เพิ่งสร้างขึ้นเช่น {094a0b01-3350-11e7-99e1-bc5ec82bc470}

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

หลังจากรีบูตคุณสามารถเลือกระหว่าง Windows 10 ที่มีและไม่มี Hyper-V เมื่อเริ่มต้น


1
หากต้องการค้นหารหัสใหม่ให้พิมพ์ "bcdedit" จากนั้นมองหาตัวระบุ {XXX} ในการกำหนดค่าบูตโหลดเดอร์ที่เพิ่มเข้ามา
user797717

ช่วยด้วย !!!!!!! การทำเช่นนี้พีซีของฉันไม่เริ่มทำงานอีกต่อไป ... ยังคงอยู่บนหน้าจอต้อนรับของ windows 10 ทั้งคืน ???!?!?
Falco

คุณแทนที่รหัสในตัวอย่างของฉันหรือไม่
hfmanson

2
หากคุณเรียกใช้คำสั่งนี้บน PowerShell อย่าลืมใส่{current}และ{GUID}ระหว่าง" "like:"{current}"
Nicke

15

บรรทัดคำสั่ง:

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

หากใครได้รับ:

เราไม่สามารถดำเนินการอัปเดตให้เสร็จสิ้นกำลังยกเลิกการเปลี่ยนแปลง

หลังจากพยายามปิดใช้งาน Hyper-V แล้วให้ลองถอนการติดตั้งอะแดปเตอร์เครือข่ายเสมือน Hyper-V จาก Device Manager -> Network Adapters


สิ่งนี้ทำให้การอัปเดต 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


1

OP มีคำตอบที่ดีที่สุดสำหรับฉันและดูเหมือนว่าคนอื่น ๆ ก็คิดหา -All เพิ่มเติมเช่นกัน ฉันตั้งค่าไฟล์แบตช์สองไฟล์จากนั้นทางลัดไปยังไฟล์เหล่านั้นเพื่อให้คุณสามารถตั้งค่าการอนุญาต Run As Admin ได้อย่างง่ายดาย

แบทช์ปิด

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

แบทช์บน

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

คลิกขวา -> สร้างทางลัดบนเดสก์ท็อป คลิกขวาที่ทางลัด -> คุณสมบัติ -> ใต้แท็บทางลัด -> ขั้นสูง -> เรียกใช้ในฐานะผู้ดูแลระบบ


0

คุณสามารถใช้สคริปต์ของฉัน วางบรรทัดรหัสลงใน notepad และบันทึกเป็น 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
โดยปกติเราควรพยายามอธิบายว่าข้อมูลโค้ดทำอะไร / ทำงานอย่างไรเมื่อตอบคำถาม
Sebastian Lenartowicz

1
@SebastianLenartowicz ดูอธิบายตัวเองให้ฉันฟัง สคริปต์จะตั้งค่า hypervisorlaunchtype เป็น auto หรือ off และยังส่งออกการตั้งค่าปัจจุบันผ่านคำสั่ง bcdedit
user797717
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.