Come filtrare e isolare oggetti PowerShell

  1. Panoramica sugli Oggetti PowerShell
  2. Filtrare l’Uscita Utilizzando PowerShell
Come filtrare e isolare oggetti PowerShell

In Windows PowerShell, la maggior parte dei risultati quando si eseguono richieste Get vengono generalmente creati e visualizzati nel formato dell’oggetto PowerShell (PSObject). I PSObject sono una delle funzioni critiche di PowerShell che lo distinguono dal resto dei linguaggi di scripting.

Tuttavia, non siamo in grado di cercare rapidamente un PSObject a causa dei suoi attributi e quindi dobbiamo isolare gli attributi prima di stabilire un indice di ricerca. In questo articolo parleremo degli oggetti di Windows PowerShell, di come analizzare il risultato del PS Object affinché i risultati siano ricercabili e di come eseguire un filtraggio corretto utilizzando PowerShell.

Panoramica sugli Oggetti PowerShell

Come accennato, gli Oggetti PowerShell sono uno dei punti salienti del linguaggio di scripting. Ogni Oggetto PowerShell ha attributi che definiscono l’oggetto nel suo insieme.

Prendiamo Get-Service come esempio.

Esempio di Codice:

Get-Service

Uscita:

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

All’interno degli oggetti PowerShell di Get-Service, abbiamo Status, Name e DisplayName come loro attributi. Per filtrare gli oggetti, dobbiamo isolare l’oggetto tra i suoi attributi utilizzando il comando Where-Object.

Ad esempio, possiamo ottenere solo il tipo Status o il tipo Name, ma non possiamo semplicemente cercare una parola chiave specifica senza prima chiamare l’attributo.

Esempio di Codice:

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

Uscita:

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

Nella sezione successiva dell’articolo, discuteremo di come possiamo visualizzare queste uscite come una stringa invece di un formato PS Object e di come eseguire un filtraggio con diverse query di ricerca.

Filtrare l’Uscita Utilizzando PowerShell

Per filtrare rapidamente l’uscita, dobbiamo visualizzarla in formato stringa. Dobbiamo piping il comando al comando Out-String.

Per l’esempio qui sotto, lo assegneremo a una variabile per facilitare il nostro prossimo frammento di codice.

Esempio di Codice:

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

Il codice sopra non produrrà un risultato a causa del valore memorizzato nella variabile. Inoltre, abbiamo eseguito una piccola operazione su stringhe per dividere i risultati linea per linea.

Se filtriamo, più tardi, lo script lo visualizzerà su base riga per riga invece di un’unica stringa.

Il valore memorizzato nella variabile $serviceOutput è in formato stringa. Per cercare la parola chiave, dobbiamo piping il comando Select-String insieme alla parola chiave che desideriamo cercare.

Esempio di Codice:

$serviceOutput | Select-String Intel

Uscita:

Running  AESMService        Intel® SGX AESM
Stopped  Intel(R) Capabi... Intel(R) Capability Licensing Servi...
Stopped  Intel(R) TPM Pr... Intel(R) TPM Provisioning Service
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
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

Articolo correlato - PowerShell Object