关于 where-object cmdlet

关于 where-object cmdlet

我刚刚开始使用 PowerShell,对此命令有一个疑问:

Get-WindowsFeature | where installed

它返回了已安装的功能,现在我想删除或提供所有功能,但是当我用已删除/可用替换“已安装”时,它什么都不显示,为什么?

多谢你们!

答案1

在您的示例中,Installed您检查的是布尔属性。它是 true 或 false,并且您正在检查所有为 的对象$TrueRemovedAvailable是 的可能值InstallState,而不是直接的属性。

你可以通过

PS> Get-Windowsfeature | Get-Member
   TypeName: Microsoft.Windows.ServerManager.Commands.Feature 
Name                      MemberType Definition
----                      ---------- ----------
<extra removed>
Installed                 Property   bool Installed {get;}
InstallState              Property   Microsoft.Windows.ServerManager.Commands.InstallState InstallState {get;}
<extra removed>

尝试以下其中一种:

Get-Windowsfeature | Where-Object { -not $_.Installed }
Get-WindowsFeature | Where-Object { $_.InstallState -eq "Available" }
Get-WindowsFeature | Where-Object { $_.InstallState -eq "Removed" }

相关内容