【问题标题】:Detecting the Windows HyperVisor via CLI通过 CLI 检测 Windows HyperVisor
【发布时间】:2019-05-14 13:42:34
【问题描述】:

如何通过 CLI 命令检测虚拟机管理程序是否在 Windows 上处于活动状态?

我运行一个使用 VirtualBox 的基于 vagrant 的项目,有时我们会遇到 Windows Hypervisor 的问题。

问题在于,我们可以可靠地判断它是否已打开的唯一方法是询问是否在 Windows 功能对话框中检查了 Hyper-V。 但有时 Hyper-V 未选中,但存在虚拟机管理程序,因为其他 Windows 功能需要它

例如,当使用适用于 linux 的 Windows Susbystem 时,或当虚拟机平台开启时,或某些安全选项时。

使用 VirtualBox 5.2,这很容易,它会无法创建虚拟机,但使用 VirtualBox 6,它会使用这个虚拟机管理程序(如果存在)。

那么,无论是通过 powershell 还是命令行,我如何确定 Windows 虚拟机管理程序是否存在并处于活动状态?

请注意,我没有测试 Hyper-V 产品是否处于活动状态,可能存在关闭 Hyper-V 的虚拟机管理程序

【问题讨论】:

    标签: windows command-line-interface hyper-v


    【解决方案1】:

    可以通过WMI属性Win32_ComputerSystem.HypervisorPresent查询。在 PowerShell 中是

    (Get-WmiObject Win32_ComputerSystem).HypervisorPresent
    

    或者使用gcim 代替Get-WmiObject

    我尝试使用bcdedit /set {current} hypervisorlaunchtype OffAuto 重新启动Windows,它分别返回FalseTrue

    有趣的是,HypervisorPresent 属性在 Get-WmiObject Win32_ComputerSystem 输出中是隐藏的。要查看隐藏字段,请调用以下选项之一:

    gcim Win32_ComputerSystem | Format-List * -Force
    gcim Win32_ComputerSystem | Format-Table * -Force
    

    来源:

    【讨论】:

      【解决方案2】:

      右键单击开始 > 运行 > msinfo32

      显示在初始视图窗格(系统摘要)的底部将显示“已检测到管理程序。Hyper-V 所需的功能将不会显示。”

      【讨论】:

      • 但是如何以编程方式在 Vagrant 文件中执行此操作?正如问题所说,我需要通过 powershell/命令行来做到这一点
      猜你喜欢
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2023-02-01
      相关资源
      最近更新 更多