Como Filtrar e Isolar Objetos do PowerShell

  1. Visão Geral dos Objetos PowerShell
  2. Filtrando Saída Usando PowerShell
Como Filtrar e Isolar Objetos do PowerShell

No Windows PowerShell, a maioria de seus resultados ao realizar solicitações Get é comumente criada e exibida no formato de objeto PowerShell (PSObject). PSObjects é uma das funções críticas do PowerShell que o distingue das demais linguagens de script.

No entanto, não conseguimos pesquisar rapidamente um PSObject devido aos seus atributos e, assim, precisamos isolar os atributos antes de estabelecer um índice de busca. Neste artigo, falaremos sobre objetos do PowerShell do Windows, como analisar o resultado do PS Object para que os resultados sejam pesquisáveis e realizar filtragens adequadas usando PowerShell.

Visão Geral dos Objetos PowerShell

Como mencionado, os Objetos PowerShell são um dos destaques da linguagem de script. Cada Objeto PowerShell possui atributos que definem o objeto como um todo.

Vamos tomar Get-Service como um exemplo.

Exemplo de Código:

Get-Service

Saída:

Status   Name               DisplayName
------   ----               -----------
Running  AarSvc_147d22      Agent Activation Runtime_147d22
Running  AdobeARMservice    Adobe Acrobat Update Service
Running  AESMService        Intel® SGX AESM

Dentro dos objetos PowerShell Get-Service, temos Status, Name e DisplayName como seus atributos. Para filtrar objetos, devemos isolar o objeto entre seus atributos usando o comando Where-Object.

Por exemplo, podemos obter apenas o tipo Status ou o tipo Name, mas não podemos apenas buscar uma palavra-chave específica sem chamar o atributo primeiro.

Exemplo de Código:

Get-Service | Where-Object { $_.Status -match "Stopped" }

Saída:

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity

Na próxima seção do artigo, discutiremos como podemos exibir essas saídas como uma string em vez de um formato de PS Object e realizar filtragem com diferentes consultas de pesquisa.

Filtrando Saída Usando PowerShell

Para filtrar a saída rapidamente, precisamos exibir a saída em formato de string. Devemos canalizar o comando para o comando Out-String.

Para o exemplo abaixo, atribuímos a uma variável para facilitar no nosso próximo trecho de código.

Exemplo de Código:

$serviceOutput = (Get-Service | Out-String) -split "`r`n"

O código acima não produzirá um resultado devido ao valor ser armazenado na variável. Além disso, realizamos uma pequena operação de string para dividir os resultados linha por linha.

Se filtrarmos, mais tarde, o script exibirá isso com base em linha por linha em vez de apenas uma string inteira.

O valor armazenado na variável $serviceOutput está em formato de string. Para pesquisar a palavra-chave, precisamos canalizar o comando Select-String junto com a palavra-chave que desejamos pesquisar.

Exemplo de Código:

$serviceOutput | Select-String Intel

Saída:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artigo relacionado - PowerShell Object