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
    




Argomenti della Guida