【问题标题】:How do you check to see if Hyper-V is enabled using PowerShell?如何检查是否使用 PowerShell 启用了 Hyper-V?
【发布时间】:2016-06-01 11:40:14
【问题描述】:

我正在尝试编写一个 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."
}

代码运行时没有错误。

【问题讨论】:

  • 最好也发布您遇到的错误
  • 代码运行时没有报错。
  • = 仅用于在 PowerShell 中存储值。要进行is equal to 比较,您必须使用-eq 语法。

标签: windows powershell hyper-v


【解决方案1】:

这是适用于我的完整的 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."
}

【讨论】:

    【解决方案2】:

    我认为这与您的if 条件有关,试试这个:

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

    = 符号不起作用,您需要通过 PowerShell 方式进行操作

    【讨论】:

    • 这解决了它,谢谢。似乎 = 正在重置 $hyperv 的值。
    • @EvanAmara 在大多数编程语言中,一个等号 (=) 分配一个值,两个等号 (==) 比较值。在 powershell -eq (意思是相等)比较两个值是否相等。如果您需要知道值是否不同,您可以使用 -ne (不等于)。查看此网站以获取有关比较值的更多信息ss64.com/ps/syntax-compare.html
    • 是否可以检查 hyper-v 是否也在运行?通常这需要重新启动,在此之前,此命令会报告该功能已启用,即使它实际上并未运行。
    【解决方案3】:

    适用于 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
        }
    }
    

    【讨论】:

      【解决方案4】:

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

      如果它们都在运行,您可以放心地假定 Hyper-V 正在运行且处于活动状态。我的机器是带有 VMWARE Workstation 14 的 Windows 10 Pro。

      【讨论】:

      • 使用 PowerShell
      • OP 寻求帮助以以编程方式执行此操作,最好使用 powershell。您的方法根本不适合列出的场景 - 而且该场景是相当明智的。 [咧嘴]
      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2022-11-28
      • 1970-01-01
      • 2019-02-09
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多