不,没有办法让这些 cmdlet 在 Windows 7 上运行。
虽然您确实不应该再使用 Windows 7,但您仍然应该能够从 WMI 获取此信息。我不记得Get-CimInstnace
cmdlet 在 7 上是否可用,所以我将使用以下Get-WmiObject
方法:
Function Get-WmiWindowsOptionalFeatures {
[CmdletBinding()]
Param(
[string]$FeatureName,
[ValidateSet('Enabled', 'Disabled', 'Absent', 'Unknown', '1', '2', '3', '4')]
[string]$InstallState
)
Get-WmiObject Win32_OptionalFeature | Where-Object {
$feature = $_
$featureMatch = !$FeatureName -or ( $FeatureName -and $feature.Name -like $FeatureName )
$installStateMatch = switch ( $InstallState ) {
{ $_ -in 'Enabled', '1' } {
$feature.InstallState -eq 1
break
}
{ $_ -in 'Disabled', '2' } {
$feature.InstallState -eq 2
break
}
{ $_ -in 'Absent', '3' } {
$feature.InstallState -eq 3
break
}
{ $_ -in 'Unknown', '4' } {
$feature.InstallState -eq 4
break
}
default {
$true
break
}
}
$featureMatch -and $installStateMatch
} | Select-Object Name, Caption, Description, InstallDate, @{
Label = 'InstallState'
Expression = {
switch ( $_.InstallState ) {
1 {
'Enabled'
break
}
2 {
'Disabled'
break
}
3 {
'Absent'
break
}
4 {
'Unknown'
break
}
default {
$_.ToString()
break
}
}
}
}
}
这将为您提供一个很好的可操作对象,其中包含可以评估和操作的重要字段。您必须检查的课程是Win32_OptionalFeatures
.
要使用该功能:
- 无参数:返回所有特征
-FeatureName
: 返回与 匹配的特征Name
。支持-like
模式。
-InstallState
: 返回与 匹配的特征InstallState
。采用方便的字符串或编号值,如下图所示。
要了解安装状态,以下是每个可能的值(它们存储为 a uint32
):
- 启用
- 已禁用
- 缺席的
- 未知
不幸的是,无法使用 WMI 来安装这些功能,因此您必须使用dism.exe
.