PowerShell

HashTables

Introduction#

A Hash Table is a structure which maps keys to values. See Hash Table for details.

Remarks#

An important concept which relies on Hash Tables is Splatting. It is very useful for making a large number of calls with repetitive parameters.

Creating a Hash Table

Example of creating an empty HashTable:

$hashTable = @{}

Example of creating a HashTable with data:

$hashTable = @{
    Name1 = 'Value'
    Name2 = 'Value'
    Name3 = 'Value3'
}

Access a hash table value by key.

An example of defining a hash table and accessing a value by the key

$hashTable = @{
    Key1 = 'Value1'
    Key2 = 'Value2'
}
$hashTable.Key1
#output
Value1

An example of accessing a key with invalid characters for a property name:

$hashTable = @{
    'Key 1' = 'Value3'
    Key2 = 'Value4'
}
$hashTable.'Key 1'
#Output
Value3

Looping over a hash table

$hashTable = @{
    Key1 = 'Value1'
    Key2 = 'Value2'
}

foreach($key in $hashTable.Keys)
{
    $value = $hashTable.$key
    Write-Output "$key : $value"
}
#Output
Key1 : Value1
Key2 : Value2

Add a key value pair to an existing hash table

An example, to add a “Key2” key with a value of “Value2” to the hash table, using the addition operator:

$hashTable = @{
    Key1 = 'Value1'
}
$hashTable += @{Key2 = 'Value2'}
$hashTable

#Output

Name                           Value
----                           -----
Key1                           Value1
Key2                           Value2

An example, to add a “Key2” key with a value of “Value2” to the hash table using the Add method:

$hashTable = @{
    Key1 = 'Value1'
}
$hashTable.Add("Key2", "Value2")
$hashTable

#Output

Name                           Value
----                           -----
Key1                           Value1
Key2                           Value2

## Enumerating through keys and Key-Value Pairs
*Enumerating through Keys*

    foreach ($key in $var1.Keys) {
        $value = $var1[$key]
        # or
        $value = $var1.$key 
    }

*Enumerating through Key-Value Pairs*

    foreach ($keyvaluepair in $var1.GetEnumerator()) {
        $key1 = $_.Key1
        $val1 = $_.Val1
    }

## Remove a key value pair from an existing hash table
An example, to remove a "Key2" key with a value of "Value2" from the hash table, using the remove operator:

    $hashTable = @{
        Key1 = 'Value1'
        Key2 = 'Value2'
    }
    $hashTable.Remove("Key2", "Value2")
    $hashTable
    
    #Output
    
    Name                           Value
    ----                           -----
    Key1                           Value1

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow