關於 where-object cmdlet

關於 where-object cmdlet

我剛開始使用 PowerShell,我對此命令有疑問:

Get-WindowsFeature | where installed

它返回我已安裝的功能,現在我想刪除或可用所有功能,但是當我用已刪除/可用替換“已安裝”時,它什麼也沒顯示,為什麼?

多謝你們!

答案1

在您的範例中,Installed您檢查的是布林屬性。無論是真是假,您都在檢查它所在的所有物件$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" }

相關內容