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