Como Criar um Array, Tabela Hash e Dicionário no PowerShell
- Criando Arrays no PowerShell
- Trabalhando com Tabelas Hash no PowerShell
- Criando Dicionários Ordenados no PowerShell
- Tabela Hash vs. Dicionário Ordenado: Principais Diferenças
- Casos de Uso do Mundo Real
- Conclusão
- Perguntas Frequentes (FAQ)

O PowerShell fornece várias estruturas de dados para armazenar e manipular dados de forma eficiente. Arrays, tabelas hash e dicionários ordenados são estruturas fundamentais que ajudam a lidar com diferentes tipos de coleções de dados em scripts e tarefas de automação.
Entender como usar essas estruturas de dados permite uma melhor organização, recuperação eficiente e gerenciamento estruturado de dados em scripts do PowerShell. Neste guia, exploraremos como:
- Criar e manipular arrays no PowerShell
- Usar tabelas hash para armazenamento de chave-valor
- Trabalhar com dicionários ordenados para manter a ordem dos dados
- Comparar tabelas hash e dicionários ordenados
- Implementar casos de uso do mundo real para cada estrutura
Ao final deste tutorial, você terá uma compreensão sólida de como trabalhar com essas estruturas de dados no PowerShell.
Criando Arrays no PowerShell
O que é um Array no PowerShell?
Um array no PowerShell é uma coleção de múltiplos valores armazenados em uma única variável. Arrays permitem que você armazene e manipule listas de dados de forma eficiente.
Declarando um Array usando @()
A maneira correta de inicializar um array no PowerShell é usando a sintaxe @()
. Aqui está como você pode criar um array com três elementos de string:
$data = @('apple', 'ball', 'cat')
Saída:
apple
ball
cat
Criando um Array Vazio
Se você precisar de um array vazio que será preenchido mais tarde, declare-o usando:
$data = @()
Obtendo o Tipo de Dado de um Array
Você pode verificar o tipo de um array usando o método .GetType()
:
$data.GetType()
Saída:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Acessando Elementos em um Array
Arrays são indexados a partir de zero, o que significa que o primeiro item está no índice [0]
.
$data[0] # Retrieves the first item
Saída:
apple
Para acessar o último elemento de um array dinamicamente, use:
$data[-1]
Saída:
cat
Adicionando Itens a um Array
Como os arrays do PowerShell são imutáveis, você não pode adicionar itens diretamente como em Python ou JavaScript. Em vez disso, você precisa criar um novo array que inclua o item adicional:
$data += 'dog'
Saída:
apple
ball
cat
dog
Removendo Itens de um Array
Para remover um item, use o filtro de array:
$data = $data | Where-Object { $_ -ne 'ball' }
Saída:
apple
cat
dog
Trabalhando com Tabelas Hash no PowerShell
O que é uma Tabela Hash?
Uma tabela hash é uma estrutura de armazenamento de chave-valor que permite recuperar valores usando chaves únicas de forma eficiente. Tabelas hash também são conhecidas como dicionários ou arrays associativos.
Criando uma Tabela Hash
Para declarar uma tabela hash no PowerShell, use a sintaxe @{}
:
$hash = @{Fruit = "Apple"; Color = "Red"; Count = 5 }
Visualizando o Conteúdo da Tabela Hash
$hash
Saída:
Name Value
---- -----
Fruit Apple
Color Red
Count 5
Acessando Valores em uma Tabela Hash
Você pode acessar valores usando suas chaves:
$hash['Color']
Saída:
Red
Alternativamente, você pode usar a notação de ponto:
$hash.Count
Saída:
5
Adicionando e Removendo Itens em uma Tabela Hash
Adicionando um Novo Par Chave-Valor
$hash['Shape'] = 'Round'
Removendo um Par Chave-Valor
$hash.Remove('Color')
Criando Dicionários Ordenados no PowerShell
Por que Usar um Dicionário Ordenado?
Uma tabela hash não mantém a ordem de inserção, mas um dicionário ordenado sim. Isso é útil quando a sequência dos dados é importante.
Declarando um Dicionário Ordenado
Use o atributo [ordered]
:
$dict = [ordered]@{Fruit = "Apple"; Color = "Red"; Count = 5 }
Acessando Elementos do Dicionário Ordenado
$dict['Fruit']
Saída:
Apple
Mantendo a Ordem
Se você imprimir uma tabela hash normal várias vezes, a ordem pode mudar. No entanto, com um dicionário ordenado, a ordem permanece consistente.
$dict
Saída:
Name Value
---- -----
Fruit Apple
Color Red
Count 5
Tabela Hash vs. Dicionário Ordenado: Principais Diferenças
Recurso | Tabela Hash | Dicionário Ordenado |
---|---|---|
Mantém Ordem? | ❌ Não | ✅ Sim |
Velocidade de Acesso | ✅ Rápido | ✅ Rápido |
Melhor Para | Acesso aleatório | Preservar a ordem das chaves |
Casos de Uso do Mundo Real
Caso de Uso 1: Armazenando Informações do Usuário (Exemplo de Dicionário Ordenado)
$user = [ordered]@{
Name = "John Doe"
Email = "johndoe@example.com"
Role = "Admin"
}
Caso de Uso 2: Contando Ocorrências de Palavras (Exemplo de Tabela Hash)
$text = "apple banana apple orange apple banana"
$wordCount = @{}
$text.Split() | ForEach-Object {
if ($wordCount.ContainsKey($_)) {
$wordCount[$_] += 1
} else {
$wordCount[$_] = 1
}
}
$wordCount
Saída:
Name Value
---- -----
apple 3
banana 2
orange 1
Conclusão
O PowerShell fornece arrays, tabelas hash e dicionários ordenados para armazenar e manipular dados de forma eficiente.
- Use arrays (
@()
) ao trabalhar com uma lista de valores. - Use tabelas hash (
@{}
) para armazenamento de chave-valor sem restrições de ordem. - Use dicionários ordenados (
[ordered]@{}
) quando preservar a ordem de inserção for essencial.
Dominar essas estruturas de dados irá melhorar sua eficiência em scripts e capacidades de automação no PowerShell. 🚀
Perguntas Frequentes (FAQ)
Qual é a diferença entre uma tabela hash e um dicionário no PowerShell?
No PowerShell, uma tabela hash e um dicionário são frequentemente usados de forma intercambiável. No entanto, dicionários são parte do framework .NET (System.Collections.Hashtable
), enquanto tabelas hash no PowerShell (@{}
) são embutidas e otimizadas para scripting no PowerShell.
Como posso adicionar ou remover itens de um array no PowerShell?
Como arrays são imutáveis no PowerShell, você não pode modificá-los diretamente. Em vez disso, use:
- Adicionando um item:
$array += 'newItem'
- Removendo um item:
$array = $array | Where-Object { $_ -ne 'itemToRemove' }
Posso classificar uma tabela hash no PowerShell?
Sim, você pode usar um dicionário ordenado ([ordered]@{}
) ou converter a tabela hash para um formato ordenado usando:
$sortedHash = $hash.GetEnumerator() | Sort-Object Name
$sortedHash
Isso garante que as chaves sejam exibidas em ordem alfabética.