gpt4 book ai didi

powershell - 如何在 Windows 10 上返回真/假到 Get-WindowsOptionalFeature

转载 作者:行者123 更新时间:2023-12-05 09:20:34 31 4
gpt4 key购买 nike

我正在尝试在安装之前检查是否安装了 Windows 功能,以避免重新安装。

我用它来检查:

function Check-WindowsFeature {
[CmdletBinding()]
param(
[Parameter(Position=0,Mandatory=$true)] [string]$FeatureName
)
if((Get-WindowsOptionalFeature -FeatureName $FeatureName -Online) -Like "Enabled") {
# $FeatureName is Installed
# (simplified function to paste here)
} else {
# Install $FeatureName
}
}
}

但是“if”总是返回 false,即使安装了功能。
示例:

C:\> (Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online) -Like "Enabled"
False

C:\> Get-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V-All -Online | ft -Property State
State
-----
Enabled

我已经尝试过格式为表格、格式为宽、使用 -Property State 进行过滤、输出为字符串、使用正则表达式匹配、使用 -eq 进行匹配包含,但没有一个有效。

函数获取 $FeatureName 正常,因为安装有效。

如何让它发挥作用?

最佳答案

因为Get-WindowsOptionalFeature的返回值是一个 AdvancedFeatureObject。您不能在带有字符串的对象上使用 -Like

您必须访问该对象的属性 State 并进行比较:

function Check-WindowsFeature {
[CmdletBinding()]
param(
[Parameter(Position=0,Mandatory=$true)] [string]$FeatureName
)
if((Get-WindowsOptionalFeature -FeatureName $FeatureName -Online).State -eq "Enabled") {
# $FeatureName is Installed
# (simplified function to paste here)
} else {
# Install $FeatureName
}
}

顺便说一句,我会将函数的名称更改为类似Install-WindowsFeatureIfNotInstalled 的名称,因为我不希望带有Check 动词的函数在其上安装任何东西我的机器

关于powershell - 如何在 Windows 10 上返回真/假到 Get-WindowsOptionalFeature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352912/

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