gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:08:39 27 4
gpt4 key购买 nike

我正在尝试编写一个 powershell 脚本来安装和设置 Hyper-V 机器。安装似乎没问题,但是,我从系统得到了相互矛盾的响应。基本上,我使用 (gcim Win32_ComputerSystem).HypervisorPresent 来确定 HyperV 是否正在运行。

它返回False

有一个具有相同成员 (gcim CIM_ComputerSystem).HypervisorPresent 的类似类也返回 False

也发现了这个问题How do you check to see if Hyper-V is enabled using PowerShell?并且此状态属性为 Enabled

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

最佳答案

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

但除此之外,CIM 和 WMI 可以被认为是 Windows 计算机通向相同信息的不同网关。同一所房子的不同门。 More on that history and the distinctions here.

当我在存在 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 是否正在运行,这是任何 VM 启动所必需的,并且只有在其他一切都打开时才能运行机器已正确完成以启用 Hyper-V。

Get-Service vmcompute

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

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

关于powershell - 检查 HyperV 是否正在运行的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63191833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com