Impara PowerShell Sort-Object con Esempi

Ordinare i dati non dovrebbe essere un compito opprimente. Se stai cercando un modo efficiente per ordinare i dati, il cmdlet PowerShell Sort-Object è qui per aiutarti!

In questo tutorial, imparerai come utilizzare il cmdlet PowerShell Sort-Object per ordinare i dati, che siano numeri, stringhe o oggetti.

Dimentica l’occhio costante sui tuoi dati e ordinali in modo efficiente in PowerShell!

Prerequisiti

Assicurati di avere una macchina con PowerShell 5.0 o versione successiva installata per seguire questo tutorial con le dimostrazioni pratiche. Questo tutorial utilizza Windows 10 con PowerShell 7 installato.

Ordinare i dati con il cmdlet PowerShell Sort-Object

A seconda delle tue esigenze, puoi ordinare i dati in base a una o più proprietà in molti modi. Il cmdlet Sort-Object ti consente di ordinare i dati, ad esempio, in ordine ascendente o discendente per facilitare l’analisi e il lavoro con informazioni strutturate.

La sintassi di base del cmdlet Sort-Object è la seguente:

  • <Oggetto-da-ordinare> – Si riferisce alla raccolta di dati da ordinare, come un array, una lista o altri tipi di dati.
  • <-Parametro> – Un parametro opzionale per specificare i criteri di ordinamento che ti consente di personalizzare come viene eseguito l’ordinamento.
<Object-to-Sort>|Sort-Object <-Parameter>

Per vedere come puoi ordinare i dati in ordine ascendente e discendente:

1. Apri PowerShell ed esegui il comando sottostante, che non fornisce output ma definisce una lista di numeri interi casuali nella variabile $numbers.

$numbers = 4, 2, 3, 1, 5

? Nota che in PowerShell, non stai solo lavorando con numeri e stringhe ma con oggetti, poiché PowerShell è un linguaggio e shell orientato agli oggetti.

2. Successivamente, esegui i seguenti comandi per ordinare (Sort-Objects) e visualizzare (Write-Output) i numeri definiti nella variabile $numbers.

$sortedNumbers = $numbers | Sort-Object
Write-Output $sortedNumbers

Senza aggiungere parametri, l’output mostra i numeri in ordine ascendente.

Sorting data in ascending order

3. Ora, esegui gli stessi comandi, ma questa volta aggiungi il parametro -Descending per ordinare e visualizzare i numeri in ordine decrescente.

$sortedNumbers = $numbers | Sort-Object -Descending
Write-Output $sortedNumbers

Un output simile a quello sotto indica che i numeri sono stati ordinati in ordine decrescente.

Sorting numbers in descending order

Ordinamento dei Dati per Valori Unici

Ordinare i dati in ordine ascendente e discendente è una cosa. Ma ci possono essere casi in cui è necessario ordinare i dati in base ai valori unici. In questo contesto, “unico” si riferisce a valori distinti o non ripetuti all’interno di un set di dati.

Per ordinare i dati per valori unici:

Esegui i seguenti comandi per eseguire le seguenti operazioni:

  • Definisci una lista di numeri interi (con duplicati inclusi) nella variabile $numbers.
  • Ordina i numeri per valori -Unique in ordine -Descending e memorizza il risultato nella variabile $sortedNumbers.

Quando si ordina per valori unici, si organizzano i dati in modo che ogni valore appaia solo una volta nel risultato ordinato, eliminando i duplicati.

Questi comandi non forniscono output, ma verificherai i dati ordinati nel passaggio seguente.

$numbers = 4, 2, 3, 3, 1, 5, 2
$sortedNumbers = $numbers | Sort-Object -Unique -Descending

Ora, esegui il comando Write-Output qui sotto per visualizzare i contenuti della variabile $sortedNumbers e verificare il risultato.

Write-Output $sortedNumbers

Di seguito, tutti i valori unici sono ordinati in ordine discendente e i valori duplicati sono stati eliminati.

Come puoi vedere, l’ordinamento per valori unici migliora l’efficienza dell’analisi dei dati ed elimina le informazioni ridondanti quando si lavora con grandi set di dati.

Sorting data by unique values

Ordinamento dei dati per stringhe

Finora, hai visto come ordinare valori numerici. Ma cosa succede se stai lavorando con stringhe? Non preoccuparti. Il comando Sort-Object ti permette di ordinare dati di stringa in un ordine specifico basato su criteri di ordinamento.

In questo contesto, una stringa si riferisce a un singolo carattere o a una sequenza di caratteri, come parole, frasi o altri dati testuali. In PowerShell, le stringhe sono rappresentate racchiudendo il testo tra virgolette, sia singole (') che doppie (").

Esegui i seguenti comandi per ordinare un array di stringhe in ordine ascendente (alfabetico) per impostazione predefinita.

Ordinare le stringhe in PowerShell offre flessibilità nell’organizzare i dati testuali in un ordine desiderato, consentendo una manipolazione ed un’analisi efficienti dei dati.

# Definire un array di stringhe
$strings = "a", "b", "c" 
# Ordinare le stringhe in ordine ascendente per impostazione predefinita (senza parametri)
$sortedStrings = $strings | Sort-Object
# Visualizzare le stringhe ordinate
Write-Output $sortedStrings
Sorting strings in alphabetical order

Ora, esegui gli stessi comandi, ma ordina in modo da -Descending invece.

# Definire un array di stringhe
$strings = "a", "b", "c" 
# Ordinare le stringhe in ordine discendente
$sortedStrings = $strings | Sort-Object -Descending
# Visualizzare le stringhe ordinate
Write-Output $sortedStrings

Questa volta vedrai l’output nell’ordine inverso, come mostrato di seguito.

Sorting strings in the reverse order

Ordinare i Dati per Proprietà

Senza dubbio ordinare le stringhe è utile. Ma tipicamente, dovresti essere più specifico quando ordini i dati. Oltre a ordinare le stringhe, perché non ordinare gli oggetti in base alle loro proprietà?

Quando si lavora con gli oggetti PowerShell, ogni oggetto di solito possiede una o più proprietà che è possibile utilizzare per l’ordinamento. Queste proprietà ti consentono di definire i criteri di ordinamento su misura per le tue esigenze.

Esegui i seguenti comandi per recuperare un elenco di tutti i processi in esecuzione (Get-Process) nel tuo sistema e ordinarli in base all’utilizzo della CPU. Il parametro -Descending visualizza il risultato con i processi più intensivi in termini di risorse elencati per primi.

# Recupera una collezione di tutti i processi in esecuzione
$processes = Get-Process

# Ordina i processi in base all'utilizzo della CPU in ordine decrescente
$sortedProcesses = $processes | Sort-Object -Property CPU -Descending

# Seleziona e visualizza i nomi e le proprietà CPU di ciascun processo
$sortedProcesses | Select-Object Name, CPU
Sorting data by properties

Ordinamento dei Tabelle Hash

L’ordinamento degli oggetti per proprietà è una svolta nel lavoro con l’analisi dei dati. Ma cosa succede con l’organizzazione dei dati in coppie chiave-valore come le tabelle hash?

Il cmdlet Sort-Object ti permette di ordinare le tabelle hash per migliorare la presentazione dei dati e semplifica il recupero delle informazioni.

Esegui il seguente codice per convertire una tabella hash in un array di coppie chiave-valore e ordinare la tabella hash in base alle sue chiavi.

# Crea una tabella hash con tre coppie chiave-valore
$hashTable = @{
    "C" = "Charlie"
    "A" = "Alpha"
    "B" = "Bravo"
}

# Ordina la tabella hash per chiavi e memorizza il risultato ordinato in $sortedHashTable
$sortedHashTable = $hashTable.GetEnumerator() | Sort-Object -Property Name

# Itera attraverso ogni voce nella tabella hash ordinata
foreach ($entry in $sortedHashTable) {
    # Stampa la coppia chiave-valore
    Write-Output "$($entry.Name): $($entry.Value)"
}

Poiché le chiavi ordinano la tabella hash, l’output assomiglierà al seguente, dove puoi osservare che l’output organizza e visualizza le coppie chiave-valore in un ordine specifico.

Questo metodo di ordinamento assicura una migliore presentazione dei dati e facilita il recupero delle informazioni dalla tabella hash.

Sorting hash tables

Conclusione

Attraverso questo tutorial, hai esplorato come ordinare valori unici, stringhe, numeri, processi e persino tabelle hash con il cmdlet Sort-Object di PowerShell. L’ordinamento dei dati è un compito che ti permette di aprire la strada a un’analisi dei dati più approfondita, e con il cmdlet Sort-Object di PowerShell, sei sulla strada giusta.

Armato di questa nuova conoscenza, ora puoi assicurarti che i tuoi dati siano organizzati in modo significativo e presentarli con fiducia agli altri.

L’ordinamento è solo una delle molte capacità preziose di PowerShell e dei suoi cmdlet. Perché non ampliare le tue competenze imparando su altri cmdlet? Forse creare log di programma con Tee-Object o misurare le dimensioni degli oggetti con Measure-Object?

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