Filtrar y aislar objetos de PowerShell

  1. Descripción general de los objetos de PowerShell
  2. Filtrado de resultados mediante PowerShell
Filtrar y aislar objetos de PowerShell

En Windows PowerShell, la mayoría de sus resultados cuando se realizan solicitudes de obtención se crean y muestran comúnmente en formato de objeto de PowerShell (PSObject). PSObjects es una de las funciones críticas de PowerShell que lo distingue del resto de lenguajes de scripting.

Sin embargo, no pudimos buscar rápidamente un PSObject debido a sus atributos y, por lo tanto, necesitamos aislar los atributos antes de establecer un índice de búsqueda. En este artículo, hablaremos sobre los objetos de Windows PowerShell, cómo analizar el resultado del objeto PS para que se puedan buscar los resultados y realizar un filtrado adecuado con PowerShell.

Descripción general de los objetos de PowerShell

Como se mencionó, los objetos de PowerShell son uno de los aspectos más destacados del lenguaje de secuencias de comandos. Cada objeto de PowerShell tiene atributos que definen el objeto como un todo.

Tomemos como ejemplo Get-Service.

Código de ejemplo:

Get-Service

Producción :

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

Dentro de los objetos de PowerShell Get-Service, tenemos Status, Name y DisplayName como sus atributos. Para filtrar objetos, debemos aislar el objeto entre sus atributos usando el comando Where-Object.

Por ejemplo, solo podemos obtener el tipo Status o el tipo Name, pero no podemos simplemente buscar una palabra clave específica sin llamar primero al atributo.

Código de ejemplo:

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

Producción :

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

En la siguiente sección del artículo, analizaremos cómo podemos mostrar estos resultados como una cadena en lugar de un formato de objeto PS y filtrar con diferentes consultas de búsqueda.

Filtrado de resultados mediante PowerShell

Para filtrar la salida rápidamente, necesitamos mostrar la salida en formato de cadena. Debemos canalizar el comando al comando Out-String.

Para el siguiente ejemplo, lo asignaremos a una variable para que sea más fácil en nuestro próximo fragmento de código.

Código de ejemplo:

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

El código anterior no arrojará ningún resultado debido a que el valor se almacena en la variable. Además, hemos realizado una pequeña operación de cadena para dividir los resultados línea por línea.

Si filtramos, más adelante, el script lo mostrará línea por línea en lugar de solo una cadena completa.

El valor almacenado en la variable $serviceOutput está en formato de cadena. Para buscar la palabra clave, debemos canalizar el comando Select-String junto con la palabra clave que deseamos buscar.

Código de ejemplo:

$serviceOutput | Select-String Intel

Producción :

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 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

Artículo relacionado - PowerShell Object