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
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn