Incontrando le hashtable per la prima volta, potresti chiederti cosa sono e come svolgono un ruolo cruciale nei tuoi script o comandi. Non preoccuparti! Questo tutorial ti spiegherà come iniziare ad utilizzare le hashtable in PowerShell.
In poche parole, le hashtable ti permettono di memorizzare e manipolare dati utilizzando coppie chiave-valore, che possono essere accessibili in modo rapido ed efficiente. In questo tutorial imparerai i concetti di base delle hashtable e come utilizzarle nei tuoi script e comandi PowerShell.
Continua a leggere e inizia ad ampliare le tue competenze con le hashtable in PowerShell!
Prerequisiti
Questo tutorial sarà una dimostrazione pratica. Per seguirlo, assicurati di avere un sistema con PowerShell v5+ installato e configurato. Questo tutorial utilizza Windows 10 con PowerShell 7, ma altre versioni di PowerShell e Windows funzioneranno.
Creazione di una hashtable in PowerShell
Trovare dati specifici può diventare una situazione “ago nel pagliaio” a volte. Ma con le hashtable, puoi cercare rapidamente elementi particolari in una vasta collezione di dati.
In PowerShell, le hashtable sono strutture dati flessibili utilizzate in molti modi, come memorizzare dati di configurazione, passare argomenti ai cmdlet e memorizzare dati in uno script.
Per vedere come funziona una hashtable in PowerShell, dovrai prima crearne una come segue:
1. Apri una sessione di PowerShell e esegui il seguente comando, che non produce output ma dichiara una variabile chiamata name
per fare riferimento a un hashtable vuoto.
Come puoi vedere di seguito, simile agli array in PowerShell, gli hashtable sono definiti utilizzando il simbolo @
.
2. Successivamente, esegui il seguente comando per verificare il tipo della variabile name
(GetType()
).
Il tipo della variabile name
è Hashtable, come mostrato di seguito. Questa informazione conferma che il tuo hashtable è stato creato con successo.

3. Dopo aver verificato il tuo hashtable, esegui il seguente codice per controllare se l’hashtable è vuoto o meno.
Il codice di seguito determina se la proprietà Count
è uguale (-eq
) a 0
e stampa un messaggio corrispondente.
Di seguito, puoi vedere che la tabella hash è vuota poiché è stata appena creata e non sono stati definiti coppie chiave-valore al suo interno.

Aggiunta di elementi a una tabella hash di PowerShell
Hai appena creato una tabella hash di PowerShell praticamente vuota, che può essere utile solo se aggiungi elementi. Come? Aggiungendo coppie chiave-valore alla tabella hash.
Simile a un array, ma invece di utilizzare interi come indici, una tabella hash di PowerShell utilizza chiavi (che possono essere di qualsiasi tipo di dato) per identificare i valori. Questa caratteristica consente l’inserimento, il recupero e l’eliminazione rapida degli elementi dalla tabella hash, poiché la chiave individua rapidamente il valore corrispondente.
Di seguito è riportata la sintassi per aggiungere una coppia chiave-valore a una tabella hash di PowerShell, dove:
$hashtable
– Il nome della tabella hash.$key
– Il nome della chiave, che è case-insensitive. Ad esempio, “Nome” e “nome” sarebbero considerate la stessa chiave in una tabella hash$value
– Il valore da associare alla chiave.
Esegui il seguente codice, che non produce output sulla console, ma dichiara coppie chiave-valore e le aggiunge alla tua tabella hash ($name
).
In una tabella hash, la chiave ti consente di eseguire una funzione hash, che mappa la chiave in una posizione specifica nella struttura dati interna della tabella hash.
? I valori della tabella hash possono essere di qualsiasi tipo, come numeri, stringhe, array, oggetti e altri tipi di dati come valori in una tabella hash.
Ora, eseguire nuovamente il codice di seguito per verificare se la tua hashtable è vuota.
Come mostrato di seguito, riceverai un messaggio che indica che la hashtable non è vuota questa volta.

Recupero degli elementi da una hashtable di PowerShell
Supponendo che tu sia sicuro che la tua hashtable non sia vuota. Come fai a sapere quali elementi esistono nella tua hashtable? Fortunatamente, puoi anche recuperare gli elementi dalla tua hashtable.
Esegui il codice di seguito per recuperare e stampare (Write-Output
) tutti gli elementi dalla tua hashtable in coppie chiave-valore, uno per riga.`

Ora, esegui il codice di seguito per recuperare e stampare (Write-Output
) tutti gli elementi di una hashtable sulla console.
? Nota che userai spesso il seguente codice in questo tutorial. Puoi evitare di copiare e incollare lo stesso codice più volte creando una funzione, ma questo è al di fuori dello scopo di questo tutorial.
Questa volta, puoi vedere le indicazioni su quali sono le chiavi e i valori tra gli elementi elencati.

Creazione di hashtable con valori predefiniti
Fino ad ora, hai solo guardato alla creazione di hashtable vuote. Ma se sai che certi valori saranno sempre necessari nel tuo hashtable, puoi crearne uno con valori predefiniti.
Hashtable con valori predefiniti possono risparmiarti tempo e rendere il tuo codice più efficiente, poiché non devi aggiungere i valori all’hashtable in seguito.
? Nota che la creazione di hashtable non produce output. Ma non preoccuparti. In questo tutorial, verificherai ogni hashtable dopo la creazione.
1. Esegui il seguente comando per creare un hashtable ($hashtable1
) con tre coppie chiave-valore.
2. Successivamente, esegui il seguente codice per verificare l’esistenza del nuovo hashtable (hashtable1
).
Vedrai che i valori per ogni coppia chiave-valore vengono stampati a schermo come previsto. Questo output conferma che i valori predefiniti sono memorizzati nelle posizioni appropriate nell’hashtable.

3. Ora, esegui il codice sottostante per creare un hashtable ($hashtable2
) con valori predefiniti utilizzando un ciclo (o un array).
4. Infine, esegui il codice sottostante per verificare che il nuovo hashtable (hashtable2
) sia stato creato con successo.
L’output sottostante conferma che il metodo del ciclo funziona quando si crea un hashtable con valori predefiniti. Tuttavia, poiché gli elementi sono elencati in modo casuale, passa alla sezione successiva per una soluzione.

Creazione di una lista ordinata di elementi negli hashtable
Per impostazione predefinita, gli elementi in un hashtable vengono memorizzati senza un ordine specifico. Ma cosa fare se hai bisogno di una lista ordinata? Puoi anche creare una lista ordinata di elementi nei tuoi hashtable per organizzare i dati in un ordine specifico.
Per creare una lista ordinata di elementi nel tuo hashtable, utilizza l’attributo [ordered]
come segue:
1. Esegui il seguente codice per creare una lista [ordered]
di elementi in una hashtable ($hashtable3
).
2. Successivamente, esegui il seguente codice per verificare che la lista ordinata di hashtable sia stata creata con successo.
Come mostrato di seguito, gli elementi elencati rimangono nell’ordine in cui li hai definiti quando hai creato la hashtable.
Alcuni possibili vantaggi nell’utilizzo di una hashtable ordinata includono, ma non sono limitati a, quanto segue:
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. Infine, chiama la tua hashtable ordinata ($hashtable3
) per confermare ulteriormente che otterrai comunque una lista ordinata di elementi.
L’output qui sotto conferma che otterrai comunque una lista ordinata di elementi, indipendentemente da come accedi alla tua hashtable.

Aggiornamento degli elementi esistenti nelle hashtable
I dati cambiano costantemente e se hai delle hashtable esistenti, aggiornarle è un’operazione cruciale. Ad esempio, stai utilizzando una hashtable per memorizzare i valori di configurazione. In tal caso, potresti dover aggiornare il valore di una chiave se la configurazione cambia.
Per aggiornare una hashtable di PowerShell, l’operatore di assegnazione =
farà al caso tuo come segue:
1. Esegui il comando seguente, che non fornisce un output, ma aggiorna il valore della chiave Key2
in $hashtable3
con NewValue2
.
Successivamente, eseguire il comando seguente per Add()
aggiungere una nuova coppia chiave-valore (Key4 = NewValue4
) all’ hashtable ($hashtable3
).
Aggiungere una nuova coppia chiave-valore non produce un output come l’aggiornamento delle liste esistenti negli hashtable, ma verificherai le modifiche nel passaggio successivo.
3. Esegui il codice seguente per verificare che i valori delle chiavi nel tuo hashtable ($hashtable3
) siano stati aggiornati.

? In PowerShell, ogni chiave in un hashtable deve essere unica. Se provi ad aggiungere una coppia chiave-valore già presente nell’ hashtable, otterrai un errore come quello riportato di seguito. Per evitare di ottenere questo errore, passa al passaggio successivo.

4. Ora, esegui il codice seguente, che utilizza il metodo Contains()
per verificare se la chiave che stai cercando di aggiungere esiste già nell’ hashtable prima di aggiungere la coppia chiave-valore.
Se la nuova chiave non esiste, otterrai il messaggio sottostante, che dice che la nuova chiave è stata aggiunta all’ hashtable.

Altrimenti, come mostrato di seguito, riceverai un messaggio se la chiave che stai cercando esiste già.

5. Infine, eseguire di nuovo il codice di seguito per recuperare tutti gli elementi nella tua hashtable ($hashtable3
).
Di seguito, puoi vedere la nuova chiave aggiunta (Chiave5) e gli altri elementi che hai aggiunto finora alla hashtable.

Rimuovere elementi da una Hashtable
Troppi elementi in una hashtable, specialmente quelli non necessari, possono solo portare confusione. Rimuovere gli elementi che non sono più rilevanti o necessari dalla tua hashtable ti sarà di aiuto.
Supponiamo che la tua hashtable contenga una lista di utenti e le loro informazioni. In tal caso, rimuovi gli utenti dalla tua hashtable se non sono più attivi.
Esegui il codice di seguito per rimuovere un elemento specifico (Chiave1
) dalla tua hashtable ($hashtable3
).
Di seguito, l’output stampa un messaggio che indica che la chiave è stata rimossa. Ma se la chiave non esiste, riceverai un messaggio che indica che la chiave non è stata trovata.

Ora, esegui il seguente codice per controllare tutti gli elementi nella tua hashtable e verificare se l’eliminazione dell’elemento è stata effettuata con successo.
Di seguito, puoi verificare che la coppia chiave-valore con chiave ‘Key5’ non esiste più nella tua hashtable.

Conclusioni
Con una struttura chiave-valore e un accesso rapido, una hashtable di PowerShell è ben adatta per gestire grandi quantità di dati in vari scenari. E in questo tutorial, hai imparato come creare, aggiungere, aggiornare ed eliminare elementi dalle hashtable. Tutto questo ti fornisce le competenze per utilizzare le hashtable in modo efficace nei tuoi script.
Perché non portare le tue nuove competenze al livello successivo? Considera l’incorporazione delle hashtable nei tuoi script per compiti più avanzati, come la manipolazione dei dati e la trasformazione. Oppure sperimenta l’uso delle hashtable in combinazione con altre strutture di dati in PowerShell, come array e oggetti, per risolvere problemi più complessi?