О командлете where-object

О командлете where-object

Я только начинаю работать с PowerShell, у меня возник вопрос по этой команде:

Get-WindowsFeature | where installed

Он возвращает мне установленные функции, теперь я хотел бы, чтобы все функции были удалены или доступны, но когда я заменяю «установлено» на «удалено/доступно», он ничего не показывает, почему?

Спасибо ребята!

решение1

В вашем примере Installedвы проверили булево свойство. Оно истинно или ложно, и вы проверяли все объекты, где оно было $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" }

Связанный контент