Ao se deparar com hashtables pela primeira vez, você pode se perguntar o que são e como desempenham um papel crucial em seus scripts ou comandos. Não se preocupe! Este tutorial vai te ajudar a começar a usar hashtables no PowerShell.
Em resumo, hashtables permitem que você armazene e manipule dados usando pares de chave-valor, que podem ser acessados de forma rápida e eficiente. E neste tutorial, você aprenderá o básico sobre hashtables e como usá-las em seus scripts e comandos do PowerShell.
Continue lendo e comece a expandir suas habilidades com hashtables no PowerShell!
Pré-requisitos
Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter um sistema com o PowerShell v5+ instalado e configurado. Este tutorial utiliza o Windows 10 com o PowerShell 7, mas outras versões do PowerShell e do Windows também funcionarão.
Criando um Hashtable no PowerShell
Recuperar dados específicos pode se tornar uma situação de “agulha no palheiro” em algum momento. Mas com hashtables, você pode pesquisar rapidamente itens específicos em uma extensa coleção de dados.
No PowerShell, hashtables são estruturas de dados flexíveis usadas de várias maneiras, como armazenar dados de configuração, passar argumentos para cmdlets e armazenar dados em um script.
Para ver como um hashtable no PowerShell funciona, você primeiro terá que criar um da seguinte forma:
1. Abra uma sessão do PowerShell e execute o seguinte comando, que não produz saída, mas declara uma variável chamada name
para referenciar uma hashtable vazia.
Como você pode ver abaixo, semelhante aos arrays no PowerShell, hashtables são definidas usando o símbolo @
.
2. Em seguida, execute o comando abaixo para verificar o tipo da variável name
(GetType()
).
O tipo da variável name
é Hashtable, como mostrado abaixo. Essa informação confirma que sua hashtable foi criada com sucesso.

3. Após verificar sua hashtable, execute o seguinte código para verificar se a hashtable está vazia ou não.
O código abaixo determina se a propriedade Count
é igual (-eq
) a 0
, e imprime uma mensagem correspondente.
Abaixo, você pode ver que a hashtable está vazia, pois você acabou de criá-la, e não há pares de chave-valor definidos nela.

Adicionando Itens a uma Hashtable do PowerShell
Você acabou de criar uma hashtable praticamente vazia do PowerShell, que só será útil se você adicionar itens. Como? Adicionando pares de chave-valor à hashtable.
Similar a um array, mas em vez de usar inteiros como índices, uma hashtable do PowerShell usa chaves (que podem ser de qualquer tipo de dado) para identificar os valores. Esse recurso permite uma inserção, recuperação e exclusão rápidas de itens da hashtable, pois a chave localiza rapidamente o valor correspondente.
Abaixo está a sintaxe para adicionar um par de chave-valor a uma hashtable do PowerShell, onde:
$hashtable
– O nome da hashtable.$key
– O nome da chave, que é insensível a maiúsculas e minúsculas. Por exemplo, “Nome” e “nome” seriam considerados a mesma chave em uma hashtable$value
– O valor a ser associado à chave.
Execute o código a seguir, que não produz saída no console, mas declara pares de chave-valor e os adiciona à sua hashtable ($name
).
Em uma hashtable, a chave permite que você execute uma função de hash, que mapeia a chave para uma localização específica na estrutura de dados interna da hashtable.
? Os valores da hashtable podem ser de qualquer tipo, como números, strings, arrays, objetos e outros tipos de dados como valores em uma hashtable.
Agora, execute o código abaixo para verificar se sua hashtable está vazia.
Como mostrado abaixo, você receberá uma mensagem dizendo que a hashtable não está vazia desta vez.

Recuperando itens de uma Hashtable do PowerShell
Suponha que você esteja confiante de que sua hashtable não está vazia. Como saber quais itens existem em sua hashtable? Felizmente, você também pode recuperar itens de sua hashtable.
Execute o código abaixo para recuperar e exibir (Write-Output
) todos os itens de sua hashtable em pares de chave-valor, um por linha.

Agora, execute o código abaixo para recuperar e imprimir (Write-Output
) todos os itens em uma hashtable no console.
? Observe que você frequentemente usará o seguinte código ao longo deste tutorial. Você pode evitar copiar e colar o mesmo código várias vezes, criando uma função, mas isso está fora do escopo deste tutorial.
Desta vez, você pode ver indicações de quais são as chaves e valores entre os itens listados.

Criando Tabelas de Hash com Valores Predefinidos
Até agora, você só viu a criação de tabelas de hash vazias. Mas se você souber que certos valores serão sempre necessários em sua tabela, você pode criar uma com valores predefinidos.
Tabelas de hash com valores predefinidos podem economizar tempo e tornar seu código mais eficiente, pois você não precisa adicionar os valores à tabela posteriormente.
? Observe que a criação de tabelas de hash não produz saída. Mas não se preocupe. Neste tutorial, você verificará cada tabela de hash após a criação.
1. Execute o comando abaixo para criar uma tabela de hash ($hashtable1
) com três pares chave-valor.
2. Em seguida, execute o seguinte código para verificar se a nova tabela de hash (hashtable1
) existe.
Você verá que os valores para cada par chave-valor são impressos na tela conforme esperado. Esta saída confirma que os valores predefinidos estão armazenados nos locais apropriados no hashtable.

3. Agora, execute o código abaixo para criar um hashtable ($hashtable2
) com valores predefinidos usando um loop (ou uma matriz).
4. Por fim, execute o código abaixo para verificar se o novo hashtable (hashtable2
) foi criado com sucesso.
A saída abaixo confirma que o método de loop funciona ao criar um hashtable com valores predefinidos. Mas, como os itens são listados aleatoriamente, vá para a próxima seção para uma solução.

Criando uma Lista Ordenada de Itens em Hashtables
Por padrão, os itens em um hashtable são armazenados sem uma ordem específica. Mas e se você precisar de uma lista ordenada? Você também pode criar uma lista ordenada de itens em seus hashtables para organizar os dados em uma ordem específica.
Para criar uma lista ordenada de itens em seu hashtable, use o atributo [ordered]
da seguinte forma:
1. Execute o seguinte código para criar uma lista [ordered]
de itens em um hashtable ($hashtable3
).
2. Em seguida, execute o seguinte código para verificar se a lista ordenada de hashtables foi criada com sucesso.
Conforme mostrado abaixo, os itens listados permanecem na ordem que você definiu quando criou o hashtable.
Alguns possíveis benefícios de usar um hashtable ordenado incluem, mas não estão limitados a, os seguintes:
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. Por fim, chame seu hashtable ordenado ($hashtable3
) para confirmar ainda mais que você obterá uma lista ordenada de itens.
A saída abaixo confirma que você ainda obterá uma lista ordenada de itens, independentemente de como acessar seu hashtable.

Atualizando Itens Existentes em Hashtables
Os dados mudam constantemente e se você tiver hashtables existentes, atualizá-los é uma tarefa crucial. Por exemplo, você está usando um hashtable para armazenar valores de configuração. Se for o caso, talvez você precise atualizar o valor de uma chave se a configuração mudar.
Para atualizar um hashtable do PowerShell, o operador de atribuição =
fará o truque da seguinte maneira:
1. Execute o comando abaixo, que não fornece saída, mas atualiza o valor da chave Key2
em $hashtable3
para NewValue2
.
Em seguida, execute o comando abaixo para Adicionar()
um novo par chave-valor (Chave4 = NovoValor4
) ao hashtable ($hashtable3
).
Adicionar um novo par chave-valor não produz saída como a atualização de listas existentes nos hashtables, mas você verificará as mudanças no próximo passo.
3. Execute o seguinte código para verificar se os valores das chaves no seu hashtable ($hashtable3
) foram atualizados.

? No PowerShell, cada chave em um hashtable deve ser única. Se você tentar adicionar um par chave-valor já existente no hashtable, você receberá um erro como o abaixo. Para evitar receber este erro, vá para o próximo passo.

4. Agora, execute o seguinte código, que utiliza o método Contains()
para verificar se a chave que você tenta adicionar já existe no hashtable antes de adicionar o par chave-valor.
Se a nova chave não existir, você receberá a mensagem abaixo, dizendo que a nova chave foi adicionada ao hashtable.

Caso contrário, conforme mostrado abaixo, você receberá uma mensagem se a chave que está tentando já existir.

5. Por último, execute novamente o código abaixo para recuperar todos os itens em sua hashtable ($hashtable3
).
Abaixo, você pode ver a chave recém-adicionada (Key5) e outros itens que você adicionou até agora à hashtable.

Removendo Itens de uma Hashtable
Muitos itens em uma hashtable, especialmente os desnecessários, podem apenas levar à confusão. Remover itens que não são mais relevantes ou necessários de sua hashtable fará um favor a você.
Suponha que sua hashtable contenha uma lista de usuários e suas informações. Se for o caso, remova os usuários de sua hashtable se eles não estiverem mais ativos.
Execute o código abaixo para remover um item específico (Key1
) de sua hashtable ($hashtable3
).
Abaixo, a saída imprime uma mensagem dizendo que a chave foi removida. Mas se a chave não existir, você receberá uma mensagem dizendo que a chave não foi encontrada.

Agora, execute o código a seguir para verificar todos os itens em sua hashtable e verificar se a exclusão do item foi bem-sucedida.
Abaixo, você pode verificar que o par chave-valor com a chave ‘Key5’ não existe mais no seu hashtable.

Conclusão
Com uma estrutura de par chave-valor e acesso rápido, um hashtable do PowerShell é adequado para gerenciar grandes quantidades de dados em várias situações. E neste tutorial, você aprendeu como criar, adicionar, atualizar e remover itens de hashtables. Tudo isso lhe proporciona as habilidades para usar hashtables de forma eficaz em seus scripts.
Que tal levar suas habilidades recém-adquiridas para o próximo nível? Considere incorporar hashtables em seus scripts para tarefas mais avançadas, como manipulação de dados e transformação. Ou experimente combinar hashtables com outros dados estruturas no PowerShell, como arrays e objetos, para resolver problemas mais complexos?