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