Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criando meus filtros pesquisa no PowerShell

Estou no primeiro curso do PowerShell (filtrando e formatando uma coleção), como exemplo eu executei um comando para obter todos os usuarios. PS c:\... >Get-Localuser Me trouxe as colunas de Nome, Enabled, Description corretamente. Agora eu quis filtrar somente os usuários que estão Habilitado. Get-Localuser | Select-Object Enabled,Name | Where-Object { $_ -like ??? "True"} Porém não estou sabendo como filtrar o objeto Enabled e mostrar os nomes

1 resposta
solução!

Boa noite, Alberto. Tudo bom?

Tente com o comando abaixo:

Get-LocalUser | Where-Object Enabled

Neste comando, o Where-Object receberá o texto Enabled como argumento e irá trabalhar desta forma:

  • Os itens da coleção dada por Get-LocalUser possuem uma propriedade chamada Enabled?
  • Sim! É do tipo bool!
  • Então eu vou mostrar apenas os itens em que esta propriedade devolve True.

Você poderia testar, por exemplo, o comando a seguir:

Get-LocalUser | Where-Object Description

O Where-Object irá exibir apenas os itens que possuem um texto na propriedade Description.


Mas, em seu exemplo, percebi que você quer selecionar apenas a propriedade Enabled e Name. Usando a boa prática de filtro à esquerda e formatação à direita, teremos:

Get-LocalUser | Where-Object Enabled | Select-Object Enabled, Name

Sobre sua abordagem, não é necessário usar o script block { ... }, pois é uma verificação simples. Os script blocks são usados em filtros mais complexos. Mas, mesmo assim, você poderia usar:

Where-Object { $_.Enabled -like True }

ou

Where-Object Enabled -like "True"

Mas estas formas apenas "funcionam", o melhor mesmo seria usar o formato mais simples Where-Object Enabled.

E, indo um pouco além, na linha de comando você pode usar o alias ? para o cmdlet Where-Object e o select para Select-Object. Ficando desta forma:

Get-LocalUser | ? Enabled | select Enabled, Name

O que você acha? Resolvi sua dúvida?

Abs.