![关于 where-object cmdlet](https://linux22.com/image/697412/%E5%85%B3%E4%BA%8E%20where-object%20cmdlet.png)
我刚刚开始使用 PowerShell,对此命令有一个疑问:
Get-WindowsFeature | where installed
它返回了已安装的功能,现在我想删除或提供所有功能,但是当我用已删除/可用替换“已安装”时,它什么都不显示,为什么?
多谢你们!
答案1
在您的示例中,Installed
您检查的是布尔属性。它是 true 或 false,并且您正在检查所有为 的对象$True
。
Removed
和Available
是 的可能值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" }