如何检查是否使用 PowerShell 启用了 Hyper-V?

How do you check to see if Hyper-V is enabled using PowerShell?

我正在尝试编写一个 PowerShell 脚本来检查 Windows 可选功能以查看是否安装了 Hyper-V。但是,我的代码不起作用。即使禁用了 Hyper-V,脚本也会输出它已启用。

#Requires -RunAsAdministrator

# Get the Hyper-V feature and store it in $hyperv
$hyperv = Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online

# Check if Hyper-V is already enabled.
if($hyperv.State = "Enabled") {
    Write-Host "Hyper-V is already enabled."
} else {
    Write-Host "Hyper-V is disabled."
}

代码为运行时没有报错。

我认为这与您的 if 状况有关,试试这个:

if($hyperv.State -eq "Enabled")

= 标志行不通,你需要用 PowerShell 的方式

这是适合我的完整 powershell 脚本。只需将其复制并粘贴到提升的 powershell 中,然后按 enter。

$hyperv = Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online
# Check if Hyper-V is enabled
if($hyperv.State -eq "Enabled") {
    Write-Host "Hyper-V is enabled."
} else {
    Write-Host "Hyper-V is disabled."
}

一种更简单的方法是通过单击“开始”按钮并键入 Services.msc 并向下滚动到 Hyper-V 主机计算服务并查看它是否 运行 来转到“服务”。还要检查 Hyper-V 虚拟机管理服务。

如果它们都是 运行,您可以安全地假设 Hyper-V 运行 并且处于活动状态。我的机器 Windows 10 Pro 和 VMWARE Workstation 14.

对于 Windows 10 专业/教育/企业

if ((Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online).State -ne 'Enabled')
{
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
}

对于Windows服务器

if ((Get-WindowsFeature -Name Hyper-V) -eq $false)
{
    Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
}

通用脚本

Write-Host "Enabling Hyper-V in host..."
if ((Get-CimInstance Win32_OperatingSystem).Caption -match 'Microsoft Windows 10')
{
    if ((Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online).State -ne 'Enabled')
    {
        Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
    }
}
if ((Get-CimInstance Win32_OperatingSystem).Caption -match 'Microsoft Windows Server')
{

    if ((Get-WindowsFeature -Name Hyper-V) -eq $false)
    {
        Install-WindowsFeature -Name Hyper-V -IncludeManagementTools
    }
}