PowerShell Select-Object semplificato: Guida per principianti

PowerShell è uno strumento potente per la gestione dei dati, ma di solito fornisce troppa informazione in una sola volta. Come sai, un’eccessiva quantità di informazioni può essere travolgente e difficile da analizzare. Ma non preoccuparti. Il cmdlet PowerShell Select-Object ti sarà molto utile.

In questo tutorial, imparerai le basi del cmdlet Select-Object per restringere o filtrare i risultati in molti modi diversi.

Continua a leggere e inizia una gestione dei dati senza dolore!

Prerequisiti

Questo tutorial comprende dimostrazioni pratiche. Per seguirlo, assicurati di avere un sistema con PowerShell installato. Questo tutorial utilizza Windows 10 con PowerShell 7, ma qualsiasi versione moderna dovrebbe funzionare.

Cosa è il cmdlet Select-Object di PowerShell?

Il cmdlet Select-Object semplifica la gestione dei dati consentendoti di selezionare proprietà specifiche da un oggetto o un insieme di dati. Allo stesso tempo, puoi rinominare proprietà o creare proprietà calcolate basate su quelle esistenti.

Il sintassi di base di Select-Object è la seguente, dove:

Parameter Function
-InputObject Specifies the object or data set you want to work with, which can be an object, an array of objects, or an output of another cmdlet.
Property Specifies the property or properties to select from the InputObject parameter. You can specify multiple properties separated by commas.
Optional Parameters Allows you to refine your selection, such as selecting a certain number of objects or skipping objects.
Select-Object [-InputObject] [Property] [Optional Parameters]

Selezione di Oggetti per Proprietà

Dato che è necessaria più di una breve introduzione per soddisfare il tuo desiderio di apprendere sul cmdlet Select-Object, perché non iniziare con uno dei suoi casi d’uso comuni? Inizia questo tutorial selezionando una proprietà specifica da un oggetto con il cmdlet Select-Object.

Supponiamo tu abbia una lista di processi in esecuzione sul tuo computer, ma desideri vedere solo i nomi di ciascun processo. Specificando la proprietà Name al cmdlet Select-Object risolverà il problema.

Apri PowerShell ed esegui il seguente comando Get-Process per recuperare e stampare solo un elenco di tutti i processi (Select-Object) per Name.

Get-Process | Select-Object Name
Selecting objects by property

Oltre ai processi in esecuzione, il cmdlet Select-Object ti consente di lavorare su un file CSV. Supponiamo tu abbia un file CSV con molte colonne ma ne hai bisogno solo di alcune. In tal caso, lascia che il cmdlet Select-Object scelga solo le colonne rilevanti così da poter manipolare e analizzare i dati.

Esegui ora il seguente comando per selezionare più proprietà (Select-Object): Name e CPU (separati da virgole). Questa funzionalità è utile quando si lavora con grandi set di dati in cui sono necessarie solo alcune proprietà di ciascun oggetto.

Inoltre, questo comando ordina anche l’elenco degli oggetti (Sort-Object) in ordine -Descending con la proprietà CPU come riferimento.

Get-Process | Select-Object Name, CPU | Sort-Object -Descending CPU

Di seguito, puoi vedere i processi elencati, a partire da quello che consuma più risorse, Google Chrome (se ne hai installato uno).

Selecting multiple properties

Creazione di una Proprietà Calcolata

Quando cerchi proprietà che si adattino meglio alle tue esigenze, considera la creazione di una proprietà calcolata. Perché? Le proprietà calcolate ti consentono di manipolare e trasformare i dati, combinare proprietà esistenti, eseguire operazioni matematiche o formattare i dati in un modo specifico.

Per creare una proprietà calcolata, devi specificare un nuovo nome di proprietà e un’espressione che definisca come calcolare il valore della proprietà:

Esegui il comando seguente per eseguire le seguenti operazioni:

  • Ottenere un elenco dei processi in esecuzione (Get-Process), selezionando solo (Select-Object) le proprietà Name e CPU.
  • Crea una nuova proprietà calcolata con il Name Memory (MB), che calcola l’utilizzo della memoria di ciascun processo in megabyte. L’utilizzo della memoria viene calcolato utilizzando un Expression che divide la proprietà WorkingSet per 1MB. Qualsiasi espressione valida di PowerShell funziona nella creazione di una proprietà calcolata.
  • Stampa tutti i processi in esecuzione recuperati in ordine -Descending per la proprietà calcolata Memory (MB).
Get-Process | Select-Object Name, CPU, @{Name="Memory (MB)";Expression={$_.WorkingSet/1MB}} | Sort-Object -Descending "Memory (MB)"
Creating a calculated property

Escludendo una Proprietà Specificata

Nella vita reale, i risultati di un comando Select-Object possono contenere informazioni sensibili, come nomi utente e password. Come evitare questo rischio?

Per impedire che i dati sensibili vengano visualizzati in output, aggiungere il parametro -ExcludeProperty per escludere una proprietà specificata dall’output.

Esegui il seguente comando per svolgere i seguenti compiti:

  • Recupera un elenco di tutti i file e cartelle (Get-ChildItem) nella directory C:\\ in modo ricorsivo (-Recurse).
  • Passa l’output al cmdlet Select-Object per selezionare le proprietà Name, Length, e LastWriteTime.
  • Escludi (-ExcludeProperty) la proprietà FullName dall’output. In questo modo si evita che i percorsi completi vengano visualizzati nell’output, potendo contenere informazioni confidenziali.
Get-ChildItem -Path C:\ -Recurse | Select-Object Name, Length, LastWriteTime -ExcludeProperty FullName
Excluding a specified property

Saltare il Primo o l’Ultimo Numero di Oggetti

Quando si lavora con set di dati massicci, trovare i dati necessari può essere come cercare un diamante in una miniera di carbone. Ma perché perdere tempo a setacciare dati irrilevanti?

In PowerShell, il cmdlet Select-Object fornisce due parametri che ti permettono di escludere il primo (-Skip) e l’ultimo (-SkipLast) numero di oggetti nell’output, rispettivamente.

Per vedere come funziona saltare diversi oggetti da un output:

Esegui il comando seguente per ottenere tutti i processi in esecuzione (Get-Process) ma -Skip i primi 100 oggetti restituiti.

Nota che il numero di oggetti saltati si basa su valori interi (numeri positivi e interi senza punti decimali), che in questo caso è 100.

Get-Process | Select-Object -Skip 100
Skipping the first 100 objects

Ora, esegui il comando seguente per ottenere un elenco dei contenuti della directory di lavoro (Get-ChildItem) ma saltare gli ultimi (-SkipLast) 100 oggetti restituiti.

Get-ChildItem | Select-Object -SkipLast 100
Skipping the last 100 objects

Selezione del Primo o Ultimo Numero di Oggetti

Oltre a saltare il primo e l’ultimo numero degli oggetti, potresti essere interessato a selezionare invece il primo e l’ultimo numero degli oggetti. Il cmdlet Select-Object supporta questa funzione con i parametri First e Last che ti consentono di saltare tutto il resto per risparmiare tempo e risorse.

Esegui il seguente comando per ottenere tutti i processi, ma seleziona solo (Select-Object) i primi -First 10 oggetti restituiti.

Get-Process | Select-Object -First 10
Selecting the first 10 objects returned

Ora, esegui il comando qui sotto per ottenere tutti i contenuti della directory di lavoro (Get-ChildItem), ma seleziona solo (Select-Object) gli ultimi -Last 10 oggetti restituiti.

Get-ChildItem | Select-Object -Last 10
Selecting the last 10 objects returned

Selezione esclusiva di oggetti unici

Mentre lavori con set di dati più grandi, potresti incontrare valori duplicati che potresti voler escludere dall’output, il che è normale. Ma la cosa buona con il cmdlet Select-Object è che non devi escludere manualmente i valori duplicati.

Aggiungendo il parametro -Unique puoi selezionare solo gli oggetti unici dall’output, ottimizzando la tua analisi e migliorando l’accuratezza dei risultati.

Esegui il comando qui sotto per selezionare (Select-Object) e restituire i primi -First 2 oggetti.

"1","1","2","3" | Select-Object -First 2

Qui sotto, puoi vedere due oggetti restituiti indipendentemente se l’altro è un valore duplicato.

Selecting and returning objects with duplicate values

Infine, esegui il seguente comando per restituire solo un valore -Unique per ciascuno dei primi -First 2 oggetti selezionati.

"1","1","2","3" | Select-Object -First 2 -Unique

Questa volta, puoi vedere solo un risultato dai primi due oggetti selezionati poiché l’altro è solo un valore duplicato. Come puoi vedere, questa produzione dimostra che il parametro -Unique è utile per eliminare rapidamente eventuali oggetti duplicati nei tuoi dati.

Selecting unique objects exclusively

Conclusione

PowerShell tende a produrre un sovraccarico di informazioni. Ma in questo tutorial, hai imparato come il cmdlet Select-Object di PowerShell aiuti a semplificare i tuoi dati per vedere solo le informazioni necessarie.

Hai visto come diversi parametri ti consentono di selezionare ed escludere dati, in particolare i valori duplicati da un output. Con il cmdlet Select-Object, la gestione di grandi quantità di dati non deve essere un compito scoraggiante.

A questo punto, puoi rapidamente perfezionare i tuoi risultati per renderli più adatti all’analisi e alla risoluzione dei problemi. Ma perché non imparare come formattare le tue proprietà calcolate per migliorare leggibilità e usabilità?

Source:
https://adamtheautomator.com/powershell-select-object/