Page cover

Hashtables and Splatting

Hashtables, also known as associative arrays or dictionary objects, are a powerful data structure in PowerShell. Unlike standard arrays, which use numeric indices, hashtables use keys to associate with values. This makes them ideal for storing and retrieving data in a structured way.


1. What is a Hashtable?

A hashtable is a collection of key-value pairs, where each key is unique and maps to a specific value. Think of it like a dictionary:

  • Key: The word you look up (e.g., "CA").

  • Value: The definition or associated data (e.g., "California").


2. Creating a Hashtable

To create a hashtable, use the @{} syntax. Each key-value pair is separated by a semicolon (;).

Example:

$States = @{
    "CA" = "California"
    "FL" = "Florida"
    "VA" = "Virginia"
    "MD" = "Maryland"
}

Key Points:

  • Keys and values can be of any data type.

  • Keys must be unique within the hashtable.

  • Use semicolons to separate key-value pairs if they are on the same line.


3. Accessing Hashtable Data

Displaying the Entire Hashtable

To display all key-value pairs:

Displaying Keys or Values

To display only the keys or values:

$States.Keys # Display all keys

Checking for Keys or Values

To check if a specific key or value exists:

Accessing Values

To retrieve the value associated with a key:


4. Modifying a Hashtable

Adding a Key-Value Pair

To add a new key-value pair:

Removing a Key-Value Pair

To remove a key-value pair:

Clearing the Hashtable

To remove all key-value pairs:


5. Practical Uses of Hashtables

Configuration Files

Hashtables are often used to store configuration settings. You can save a hashtable to a .psd1 file and load it later using Import-PowerShellDataFile.

Example:

Filtering Event Logs

The Get-WinEvent cmdlet uses hashtables for filtering event logs.

Example:


6. Splatting: Simplifying Command Parameters

Splatting is a technique where you use a hashtable to pass multiple parameters to a cmdlet. This makes your code cleaner and easier to read.

Example: Splatting with Get-WinEvent

Example: Splatting with New-NetIPsecRule

Key Points:

  • Use @ instead of $ when passing the hashtable to a cmdlet.

  • Splatting is especially useful for cmdlets with many parameters.


7. Advanced Hashtable Features

Nested Hashtables

Hashtables can contain other hashtables, allowing you to create complex data structures.

Example:

Iterating Over Hashtables

You can loop through a hashtable using foreach.

Example:

Last updated