Ao deparar-se com hashtables pela primeira vez, pode questionar-se sobre o que são e como desempenham um papel crucial nos seus scripts ou comandos. Não se preocupe! Este tutorial tem tudo o que precisa para começar a utilizar hashtables no PowerShell.
Em poucas palavras, hashtables permitem armazenar e manipular dados utilizando pares chave-valor, aos quais se pode aceder de forma rápida e eficiente. E neste tutorial, irá aprender o básico sobre hashtables e como utilizá-los nos seus scripts e comandos PowerShell.
Continue a ler e comece a expandir o seu conjunto de habilidades com hashtables no PowerShell!
Pré-requisitos
Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de que tem um sistema com o PowerShell v5+ instalado e configurado. Este tutorial utiliza o Windows 10 com 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 transformar-se numa situação de “procurar uma agulha num palheiro” em algum momento. Mas com hashtables, pode procurar rapidamente itens específicos numa extensa coleção de dados.
No PowerShell, hashtables são estruturas de dados flexíveis utilizadas de várias maneiras, como armazenar dados de configuração, passar argumentos para cmdlets e armazenar dados num script.
Para ver como funciona um hashtable no PowerShell, 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, as 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 tabela de hash está vazia, pois você acabou de criá-la, e não há pares de chave-valor definidos nela.

Adicionando Itens a uma Tabela de Hash do PowerShell
Você acabou de criar uma tabela de hash do PowerShell praticamente vazia, que só será útil se você adicionar itens. Como fazer isso? Adicionando pares de chave-valor à tabela de hash.
Similar a uma matriz, mas em vez de usar inteiros como índices, uma tabela de hash do PowerShell usa chaves (que podem ser de qualquer tipo de dado) para identificar os valores. Essa característica permite a inserção, recuperação e exclusão rápidas de itens da tabela de hash, já que a chave localiza rapidamente o valor correspondente.
Abaixo está a sintaxe para adicionar um par de chave-valor a uma tabela de hash do PowerShell, onde:
$hashtable
– O nome da tabela de hash.$key
– O nome da chave, que são insensíveis a maiúsculas. Por exemplo, “FirstName” e “firstname” seriam considerados a mesma chave em uma tabela de hash$value
– O valor associado à chave.
Execute o código a seguir, que não gera saída no console, mas declara pares de chave-valor e os adiciona à sua tabela de hash ($name
).
Em uma tabela de hash, 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 tabela de hash.
? Os valores da tabela de hash podem ser de qualquer tipo, como números, strings, matrizes, objetos e outros tipos de dados.
Agora, execute o código abaixo para verificar se o seu hashtable está vazio.
Como mostrado abaixo, você receberá uma mensagem dizendo que o hashtable não está vazio desta vez.

Recuperando Itens de um Hashtable no PowerShell
Suponha que você esteja confiante de que seu hashtable não está vazio. Como você sabe quais itens existem no seu hashtable? Felizmente, você também pode recuperar itens do seu hashtable.
Execute o código abaixo para recuperar e exibir (Write-Output
) todos os itens do seu 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 um hashtable para o 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 está fora do escopo deste tutorial.
Desta vez, você verá indicações de quais são as chaves e valores entre os itens listados.

Criando Hashtable com Valores Predefinidos
Até agora, você só viu a criação de hashtables vazias. Mas se você souber que certos valores sempre serão necessários em sua hashtable, você pode criar uma com valores predefinidos.
Hashtables com valores predefinidos podem economizar tempo e tornar seu código mais eficiente, já que você não precisa adicionar os valores posteriormente.
? Observe que a criação de hashtables não gera saída. Mas não se preocupe. Neste tutorial, você verificará cada hashtable após a criação.
1. Execute o comando abaixo para criar uma hashtable ($hashtable1
) com três pares chave-valor.
2. Em seguida, execute o seguinte código para verificar se a nova hashtable (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 um array).
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, pule 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 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 uma hashtable ($hashtable3
).
2. Em seguida, execute o seguinte código para verificar se a lista ordenada de hashtables foi criada com sucesso.
Como mostrado abaixo, os itens listados permanecem na ordem que você os definiu quando criou a hashtable.
Alguns possíveis benefícios de usar uma hashtable ordenada incluem, mas não se limitam, aos 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 sua hashtable ordenada ($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 sua hashtable.

Atualizando Itens Existentes em Hashtables
Os dados mudam constantemente e, se você tiver hashtables existentes, atualizá-los será uma tarefa crucial. Por exemplo, você está usando uma hashtable para armazenar valores de configuração. Se for o caso, você pode precisar atualizar o valor de uma chave se a configuração mudar.
Para atualizar uma hashtable do PowerShell, o operador de atribuição =
fará o truque da seguinte forma:
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 (Key4 = NovoValor4
) à tabela de dispersão ($hashtable3
).
Adicionar um novo par chave-valor não produz saída como a atualização de listas existentes em tabelas de dispersão, mas você verificará as mudanças na etapa seguinte.
3. Execute o código a seguir para verificar se os valores das chaves na sua tabela de dispersão ($hashtable3
) foram atualizados.

? No PowerShell, cada chave em uma tabela de dispersão deve ser única. Se você tentar adicionar um par chave-valor já existente na tabela de dispersão, você receberá um erro como o abaixo. Para evitar receber este erro, pule para a próxima etapa.

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

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 seu hashtable ($hashtable3
).
Abaixo, você pode ver a chave recém-adicionada (Key5) e outros itens que você adicionou até agora ao hashtable.

Removendo Itens de um Hashtable
Muitos itens em um hashtable, especialmente os desnecessários, podem apenas levar à confusão. Remover itens que não são mais relevantes ou necessários do seu hashtable será útil.
Suponha que seu hashtable contenha uma lista de usuários e suas informações. Se for o caso, remova usuários do seu hashtable se eles não estiverem mais ativos.
Execute o código abaixo para remover um item específico (Key1
) do seu 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 seguinte código para verificar todos os itens em seu 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ários cenários. E neste tutorial, você aprendeu como criar, adicionar, atualizar e remover itens de hashtables. Tudo isso lhe dá as habilidades para usar hashtables de forma eficaz em seus scripts.
Por que não 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 outras estruturas de dados no PowerShell, como arrays e objetos, para resolver problemas mais complexos?