检查 HyperV 是否正在运行的正确方法是什么?

问题描述 投票:0回答:2

我正在尝试编写一个 powershell 脚本来安装和设置 Hyper-V 计算机。安装似乎没问题,但是,我从系统中得到了矛盾的响应。 基本上,我使用

(gcim Win32_ComputerSystem).HypervisorPresent
来确定 HyperV 是否正在运行。

它返回False

有一个具有相同成员的类似类

(gcim CIM_ComputerSystem).HypervisorPresent
也返回False

还发现了这个问题如何使用PowerShell检查是否启用了Hyper-V? 并且此状态属性为 Enabled

我错过了什么吗?这些查询不一样吗?您能否指出其中是否有任何已被弃用? 我是不是完全被骗了,启用意味着系统能够运行HyperV,但实际上它没有运行?

powershell hyper-v hypervisor
2个回答
8
投票

CIM 和 WMI 是一个很长的故事,但简短的总结是,WMI 是 Microsoft 对 DMTF(分布式管理任务组)定义的 OMI 标准的实现,旨在制定行业范围的标准。因此,当然,创建一个新标准会导致一堆不同的实现,这些实现基本上是他们自己的标准。

但除此之外,CIM 和 WMI 可以被视为 Windows 计算机上相同信息的不同网关。同一栋房子的不同门。 更多关于历史和区别的信息请点击这里。

当我在存在 Hyper-V 的计算机上运行您共享的 PowerShell 命令(其中任何一个)时,即使以标准非管理员用户身份运行,我都会得到

True
的回复。

您还可以通过查看

CIM_Processor
类来检查 BIOS 固件是否启用了虚拟化。

(Get-CimInstance win32_processor).VirtualizationFirmwareEnabled
True

您还可以检查是否安装了 Windows 功能,但这并不能为您提供全面的信息(例如,如果在应用于未在 BIOS 中启用虚拟化组件的计算机的映像中启用了 Windows 功能会怎样。)

[ADMIN] C:\>(Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online).State
Enabled

此外,该技术👆需要管理员权限。

另一种方法(也许是最简单的检查方法)是查看

Hyper-V Computer Service
是否正在运行,这是任何虚拟机启动所必需的,并且只有在计算机上的其他所有操作都正确完成以启用 Hyper-V 时才能运行。

Get-Service vmcompute

Status   Name               DisplayName
------   ----               -----------
Running  vmcompute          Hyper-V Host Compute Service

我们过去常常使用 MDT 任务序列来部署服务器,并在此过程中启用 Hyper-V。它需要重新启动并运行特殊命令才能应用正确的 BIOS 设置。然后,我们可以启用 Windows 功能,但这些功能需要重新启动两次,因此对于大多数成像系统来说处理起来相当棘手。我们最终的“健全性检查”是 Hyper-V 计算服务是否正在运行。


0
投票

我需要停止 Hyper-V 计算机服务才能使用不同的程序。我需要什么编译器来运行这些: (Get-CimInstance win32_processor).VirtualizationFirmwareEnabled [管理员] C:>(Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online).State 您能给我发送有关如何使用这些的信息吗? 感谢您的帮助, [email protected]

© www.soinside.com 2019 - 2024. All rights reserved.