TÓPICO
    about_Hash_Tables

DESCRIÇÃO RESUMIDA
    Descreve como criar, usar e classificar tabelas de hash no Windows 
    PowerShell.


DESCRIÇÃO LONGA
    Uma tabela de hash, também conhecida como um dicionário ou matriz 
    associativa, é uma estrutura de dados compacta que armazena um ou 
    mais pares nome/valor. Por exemplo, uma tabela de hash pode conter 
    uma série de nomes e IDs de funcionário, nomes de computadores e 
    endereços IP ou IDs e texto de mensagem.
 

    As tabelas de hash são frequentemente usadas porque são muito 
    eficientes para localizar e recuperar dados. Você pode usar 
    tabelas de hash para armazenar listas e criar propriedades 
    calculadas no Windows PowerShell. E o Windows PowerShell tem um 
    cmdlet, ConvertFrom-StringData, que converte cadeias de 
    caracteres em uma tabela de hash.


  Criando tabelas de hash
      Os itens em uma tabela de hash são organizados em pares 
      nome/valor, como:


          Msg1="Digite sua senha."
          Msg2="O parâmetro de caminho é obrigatório." 
          Msg3="O alias de Get-Command é gcm." 

      Os valores são mapeados ou associados aos nomes para que o Windows 
      PowerShell retorne o valor, quando você enviar o nome.


      No Windows PowerShell, a sintaxe de uma tabela de hash é como segue:

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


      Quando você criar uma tabela de hash, siga estas diretrizes:


          - Inicie a tabela de hash com um sinal de arroba (@).

          - Coloque a tabela de hash entre chaves ({}).

          - Digite um ou mais pares nome-valor para o conteúdo da 
            tabela de hash.

          - Use um sinal de igual (=) para separar cada nome de seu valor.

          - Use um ponto-e-vírgula (;) para separar os pares nome/valor.

          - Se um nome ou valor contém espaços, inclua-o entre em aspas.


      Por exemplo, uma tabela de hash das mensagens anteriores do 
      usuário se parece com:


          @{
          Msg1="Digite sua senha.";
          Msg2="O parâmetro é obrigatório."; 
          Msg3="O alias de Get-Command é gcm."; }


      Para usar uma tabela de hash em scripts e comandos, salve-a em uma 
      variável. O valor da variável é um objeto de tabela de hash 
      (System.Collections.Hashtable) e cada nome nos pares nome/valor é uma 
      propriedade do objeto de tabela de hash.


      Os comandos a seguir salvam a tabela de hash de mensagem de 
      usuário na variável $a e usa o método de ponto para exibir os 
      valores. 


          C:\PS> $a = @{
          >> Msg1="Digite sua senha.";
          >> Msg2="O parâmetro de caminho é obrigatório.";
          >> Msg3="O alias de Get-Command é gcm.";
          >> }



          C:\PS> $a
          Name                           Value
          ----                           -----
          Msg1                    Digite sua senha.
          Msg3                    O alias de Get-Command é gcm.
          Msg2                    O parâmetro de caminho é obrigatório.

          C:\PS> $a.Msg1
          Digite sua senha.


      As tabelas de hash não são limitadas a um tipo de dados. Você 
      pode digitar qualquer tipo de dados em uma tabela de hash e 
      combinar tipos de dados em uma única tabela de hash. Por 
      exemplo, você pode compilar uma tabela de hash que contém um 
      inteiro, uma chamada para um cmdlet e uma cadeia de caracteres.


  Classificando tabelas de hash
      Para classificar a tabela de hash alfabeticamente por chaves ou 
      valores, use o método GetEnumerator de tabelas de hash para obter as 
      chaves e valores na tabela de hash e então use o cmdlet Sort-Object para 
      classificá-los.


      Por exemplo, o comando a seguir classifica a tabela de hash em $a 
      alfabeticamente por meio de chaves.


          C:\PS> $a.getenumerator() | sort-object - chave de propriedade

          Name                           Value
          ----                           -----
          Msg1                           Digite sua senha.
          Msg2                           O parâmetro de caminho é obrigatório.
          Msg3                           O alias de Get-Command é gcm.


      O comando a seguir usa o mesmo método para classificar os 
      valores de hash em ordem decrescente.


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

          Name                           Value
          ----                           -----
          Msg2                           O parâmetro de caminho é obrigatório.
          Msg3                           O alias de Get-Command é gcm.
          Msg1                           Digite sua senha.



  ConvertFrom-StringData
      O cmdlet ConvertFrom-StringData converte uma cadeia de 
      caracteres ou uma cadeia de caracteres here de pares nome/valor 
      em uma tabela de hash. Você pode usar o cmdlet ConvertFrom-Strin
      gData com segurança na seção Dados de um script e com o cmdlet 
      Import-LocalizedData para exibir mensagens para o usuário na 
      cultura da interface do usuário atual.


      As cadeias de caracteres here são especialmente úteis quando os 
      valores na tabela de hash incluem aspas. (Para obter mais 
      informações sobre cadeias de caracteres here, consulte 
      about_Quoting_Rules.)


      O exemplo a seguir mostra como criar uma cadeia de caracteres 
      here das mensagens do usuário no exemplo anterior e como usar 
      ConvertFrom-StringData para convertê-las de cadeia de 
      caracteres para tabela hash.


      O comando a seguir cria uma cadeia de caracteres here dos pares 
      nome/valor e salva-a na variável $string.


          C:\PS> $string = @"
          Msg1="Digite sua senha."
          Msg2="O parâmetro de caminho é obrigatório." 
          Msg3="O alias de Get-Command é gcm." 
          "@

   
    Este comando usa o cmdlet ConvertFrom-StringData para converter a 
    cadeia de caracteres here em uma tabela de hash.


        C:\PS> convertfrom-stringdata $string

        Name                           Value
        ----                           -----
        Msg3                           "O alias de Get-Command é gcm."
        Msg2                           "O parâmetro de caminho é obrigatório."
        Msg1                           "Digite sua senha."


CONSULTE TAMBÉM
    about_Arrays
    about_Quoting_Rules
    about_Script_Internationalization 
    ConvertFrom-StringData
    Import-LocalizedData
    




Sumário