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

Windows 如何使用PowerShell检查Hyper-V是否已启用?,windows,powershell,hyper-v,Windows,Powershell,Hyper V,我正在尝试编写一个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

我正在尝试编写一个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($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 Pro/Education/Enterprise
if((获取WindowsOptionalFeature-FeatureName Microsoft-Hyper-V-All-Online)。状态-ne“已启用”)
{
启用Windows OptionalFeature-联机-功能名称Microsoft-Hyper-V-全部
}
适用于Windows Server
if((获取窗口功能-名称Hyper-V)-eq$false)
{
安装WindowsFeature-名称Hyper-V-IncludeManagementTools
}
通用脚本
Write Host“在主机中启用Hyper-V…”
if((获取CimInstance Win32_OperatingSystem)。标题-匹配“Microsoft Windows 10”)
{
如果((获取WindowsOptionalFeature-FeatureName Microsoft-Hyper-V-All-Online)。状态-ne“已启用”)
{
启用Windows OptionalFeature-联机-功能名称Microsoft-Hyper-V-全部
}
}
if((获取CimInstance Win32_OperatingSystem)。标题-匹配“Microsoft Windows Server”)
{
if((获取WindowsFeature-名称Hyper-V)-eq$false)
{
安装WindowsFeature-名称Hyper-V-IncludeManagementTools
}
}

同时发布您收到的错误总是好的运行代码时没有错误。
=
仅用于在PowerShell中存储值。要进行
等于
比较,您必须使用
-eq
语法。这修复了它,谢谢。似乎=正在重置$hyperv的值。@EvanAmara在大多数编程语言中,一个等号(=)赋值,两个等号(=)比较值。在powershell中-如果两个值相等,则比较eq(表示相等)。如果需要知道这些值是否不同,可以使用-ne(不相等)。有关比较值的更多信息,请访问此网站。是否可以检查hyper-v是否也在运行?通常,这需要重新启动,在此之前,此命令会报告该功能已启用,即使该功能未实际运行。使用powershell OP要求以编程方式执行此操作,最好使用powershell。您的方法根本不适合所列出的场景,而且该场景相当合理。[咧嘴笑]