Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nota editorial
Importante
A Especificação da Linguagem do Windows PowerShell 3.0 foi publicada em dezembro de 2012 e é baseada no Windows PowerShell 3.0. Essa especificação não reflete o estado atual do PowerShell. Não há nenhum plano para atualizar essa documentação para refletir o estado atual. Esta documentação é apresentada aqui para referência histórica.
O documento de especificação está disponível como um documento do Microsoft Word do Centro de Download da Microsoft em: https://www.microsoft.com/download/details.aspx?id=36389 esse documento do Word foi convertido para apresentação aqui no Microsoft Learn. Durante a conversão, algumas alterações editoriais foram feitas para acomodar a formatação para a plataforma Docs. Alguns erros de digitação e pequenos foram corrigidos.
Sintaxe:
Dica
A notação ~opt~ nas definições de sintaxe indica que a entidade lexical é opcional na sintaxe.
hash-literal-expression:
@{ new-lines~opt~ hash-literal-body~opt~ new-lines~opt~ }
hash-literal-body:
hash-entry
hash-literal-body statement-terminators hash-entry
hash-entry:
key-expression = new-lines~opt~ statement
key-expression:
simple-name
unary-expression
statement-terminator:
;
new-line-character
Introdução 10.1
O tipo Hashtable representa uma coleção de objetos de par chave/valor que dá suporte à recuperação eficiente de um valor quando indexado pela chave. Cada par chave/valor é um elemento , que é armazenado em algum tipo de objeto definido pela implementação.
A chave de um elemento não pode ser o valor nulo. Não há restrições sobre o tipo de chave ou valor. Não há suporte para chaves duplicadas.
Considerando um objeto de par chave/valor, a chave e o valor associado podem ser obtidos usando as propriedades de instância Chave e Valor, respectivamente.
Considerando uma ou mais chaves, os valores correspondentes podem ser acessados por meio do operador de índice Hashtable [] (seção 7.1.4.3).
Todos os Hashtables são do tipo Hashtable (§4.3.3).
A ordem das chaves na coleção retornada por Keys não é especificada; no entanto, é a mesma ordem que os valores associados na coleção retornada por Valores.
Aqui estão alguns exemplos envolvendo Hashtables:
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.FirstName # designates the key FirstName
$h1["LastName"] # designates the associated value for key LastName
$h1.Keys # gets the collection of keys
Os elementos Hashtable são armazenados em um objeto do tipo DictionaryEntry e as coleções retornadas por Keys e Values têm o tipo ICollection.
10.2 Criação de Tabela Hash
Uma Hashtable é criada por meio de um literal de hash (seção 7.1.9) ou do cmdlet New-Object. Ele pode ser criado com zero ou mais elementos. A propriedade Count retorna a contagem de elementos atual.
10.3 Adicionar e remover elementos em Hashtable
Um elemento pode ser adicionado a uma Hashtable atribuindo (seção 7.11.1) um valor a um nome de chave não existente ou a um índice (seção 7.1.4.3) que usa um nome de chave não existente. A remoção de um elemento requer o uso do método Remove. Por exemplo
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h1.Dept = "Finance" # adds element Finance
$h1["Salaried"] = $false # adds element Salaried
$h1.Remove("Salaried") # removes element Salaried
10.4 Concatenação de Tabela de hash
As Tabelas de hash podem ser concatenadas por meio dos operadores + e +=, que resultam na criação de uma nova Hashtable. Os Hashtables existentes não são alterados. Consulte do §7.7.4 para obter mais informações.
10.5 Hashtables como tipos de referência
Como Hashtable é um tipo de referência, a atribuição de um Hashtable envolve uma cópia superficial; ou seja, a variável atribuída refere-se ao mesmo Hashtable; nenhuma cópia do Hashtable é feita. Por exemplo
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123 }
$h2 = $h1
$h1.FirstName = "John" # change key's value in $h1
$h2.FirstName # change is reflected in $h2
10.6 Enumerando em uma Tabela de hash
Para processar cada par em uma Hashtable, use a propriedade Keys para recuperar a lista de chaves como uma matriz e, em seguida, enumerar sobre os elementos dessa matriz, recebendo o valor associado por meio da propriedade Value ou de um índice, dessa forma
$h1 = @{ FirstName = "James"; LastName = "Anderson"; IDNum = 123}
foreach ($e in $h1.Keys) {
"Key is " + $e + ", Value is " + $h1[$e]
}