Sei sulla pagina 1di 4

ARGOMENTO

about_Hash_Tables

DESCRIZIONE BREVE
Descrive come creare, utilizzare e ordinare le tabelle hash in Windows
PowerShell.

DESCRIZIONE DETTAGLIATA
Una tabella hash, anche nota come dizionario o matrice
associativa, è una struttura dei dati compatta in cui sono
archiviate una o più coppie nome/valore. Una tabella hash potrebbe ad
esempio contenere una serie di nomi e ID dipendente, nomi di computer e
indirizzi IP oppure ID messaggio e testo di messaggi.

Le tabelle hash vengono utilizzate con frequenza perché possono


rivelarsi strumenti molto efficienti per la ricerca e il recupero
di dati. È possibile utilizzare le tabelle hash per archiviare
elenchi e creare proprietà calcolate in Windows PowerShell e in
Windows PowerShell è disponibile il cmdlet ConvertFrom-StringData che
converte le stringhe in tabelle hash.

Creazione di tabelle hash


Gli elementi di una tabella hash sono disposti in coppie
nome/valore, ad esempio:

Msg1="Immettere la password."
Msg2="Il parametro path è obbligatorio."
Msg3="L'alias di Get-Command è gcm."

I valori vengono mappati o associati ai nomi in modo che quando


si invia il nome, venga restituito il relativo valore.

Di seguito viene illustrata la sintassi di una tabella hash in


Windows PowerShell:

@{ <nome> = <valore>; [<nome> = <valore> ] ...}

Quando si crea una tabella hash, attenersi alle istruzioni seguenti:

- Iniziare la tabella hash con il carattere chiocciola (@).

- Racchiudere la tabella hash tra parentesi graffe ({}).

- Immettere una o più coppie nome/valore per il contenuto della


tabella hash.

- Utilizzare un segno di uguale (=) per separare ogni nome dal


relativo valore.

- Utilizzare un punto e virgola (;) per separare le coppie


nome/valore.
- Se un nome o un valore contiene degli spazi, racchiuderlo tra
virgolette.

Ad esempio, una tabella hash dei messaggi utente precedenti è


simile alla seguente:

@{
Msg1="Immettere la password.";
Msg2="Il parametro path è obbligatorio.";
Msg3="L'alias di Get-Command è gcm.";
}

Per utilizzare una tabella hash in script e comandi, salvarla in una


variabile. Il valore della variabile è un oggetto tabella hash
(System.Collections.Hashtable) e ogni nome nelle coppie nome/valore è una
proprietà dell'oggetto tabella hash.

I comandi seguenti salvano la tabella hash del messaggio utente


in una variabile $a e utilizzano il metodo con punto per
visualizzare i valori.

C:\PS> $a = @{
>> Msg1="Immettere la password.";
>> Msg2="Il parametro path è obbligatorio.";
>> Msg3="L'alias di Get-Command è gcm.";
>> }

C:\PS> $a
Nome Valore
---- -----
Msg1 Immettere la password.
Msg3 L'alias di Get-Command è gcm.
Msg2 Il parametro path è obbligatorio.

C:\PS> $a.Msg1
Immettere la password.

Le tabelle hash non sono limitate a un tipo di dati. È


possibile immettere qualsiasi tipo di dati in una tabella hash
e combinare più tipi di dati in una sola tabella hash. Ad esempio,
è possibile creare una tabella hash contenente un valore intero,
una chiamata a un cmdlet e una stringa.

Ordinamento di tabelle hash


Per disporre in ordine alfabetico la tabella hash in base alle
chiavi o ai valori, utilizzare il metodo GetEnumerator delle
tabelle hash per ottenere le chiavi e i valori nella tabella
hash, quindi utilizzare il cmdlet Sort-Object per ordinarle.
Ad esempio, il comando seguente dispone la tabella hash in $a
in ordine alfabetico in base alle chiavi.

C:\PS> $a.getenumerator() | sort-object -property key

Nome Valore
---- -----
Msg1 Immettere la password.
Msg2 Il parametro path è obbligatorio.
Msg3 L'alias di Get-Command è gcm.

Il comando seguente utilizza lo stesso metodo per ordinare i


valori hash in ordine decrescente.

C:\PS> $a.getenumerator() | sort-object -property value -descending

Nome Valore
---- -----
Msg2 Il parametro path è obbligatorio.
Msg3 L'alias di Get-Command è gcm.
Msg1 Immettere la password.

ConvertFrom-StringData
Il cmdlet ConvertFrom-StringData converte una stringa o una
stringa here di coppie name/value in una tabella hash. È possibile
utilizzare in modo sicuro il cmdlet ConvertFrom-StringData nella
sezione Dati di uno script e con il cmdlet Import-LocalizedData per
visualizzare i messaggi utente nelle impostazioni cultura dell'interfaccia
utente dell'utente corrente.

Le stringhe here sono particolarmente utili quando i valori


nella tabella hash includono virgolette. Per ulteriori
informazioni sulle stringhe here, vedere about_Quoting_Rules.

Nell'esempio seguente viene illustrato come creare una stringa


here dei messaggi utente dell'esempio precedente e come utilizzare
ConvertFrom-StringData per convertirli da stringa a tabella hash.

Il comando seguente crea una stringa here delle coppie


nome/valore, quindi lo salva nella variabile $string.

C:\PS> $string = @"


Msg1="Immettere la password."
Msg2="Il parametro path è obbligatorio." Msg3="L'alias di
Get-Command è gcm." "@

Questo comando utilizza il cmdlet ConvertFrom-StringData per


convertire la stringa here in una tabella hash.
C:\PS> convertfrom-stringdata $string

Nome Valore
---- -----
Msg3 "L'alias di Get-Command è gcm."
Msg2 "Il parametro path è obbligatorio."
Msg1 "Immettere la password."

VEDERE ANCHE
about_Arrays
about_Quoting_Rules
about_Script_Internationalization
ConvertFrom-StringData
Import-LocalizedData

Potrebbero piacerti anche