Sobre o cmdlet where-object

Sobre o cmdlet where-object

Estou começando com o PowerShell, tenho uma dúvida sobre este comando:

Get-WindowsFeature | where installed

Ele me retorna os recursos instalados, agora gostaria que todos os recursos fossem removidos ou disponibilizados, mas quando substituo "instalado" por removido/disponível, não me mostra nada, por quê?

Obrigado rapazes!

Responder1

No seu exemplo, o Installedque você verificou era uma propriedade booleana. É verdadeiro ou falso, e você estava verificando todos os objetos onde estava $True. Removede Availablesão valores possíveis de InstallState, não propriedades diretamente.

Você pode ver isso com

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>

Experimente um destes:

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

informação relacionada