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