How to Create an Array, Hash Table, and Dictionary in PowerShell

  1. Creating Arrays in PowerShell
  2. Working with Hash Tables in PowerShell
  3. Creating Ordered Dictionaries in PowerShell
  4. Hash Table vs. Ordered Dictionary: Key Differences
  5. Real-World Use Cases
  6. Conclusion
  7. Frequently Asked Questions (FAQ)
How to Create an Array, Hash Table, and Dictionary in PowerShell

PowerShell provides various data structures to store and manipulate data efficiently. Arrays, hash tables, and ordered dictionaries are fundamental structures that help in handling different types of data collections in scripts and automation tasks.

Understanding how to use these data structures allows for better organization, efficient retrieval, and structured data management in PowerShell scripts. In this guide, we will explore how to:

  • Create and manipulate arrays in PowerShell
  • Use hash tables for key-value storage
  • Work with ordered dictionaries to maintain data order
  • Compare hash tables and ordered dictionaries
  • Implement real-world use cases for each structure

By the end of this tutorial, you’ll have a solid understanding of how to work with these data structures in PowerShell.

Creating Arrays in PowerShell

What is an Array in PowerShell?

An array in PowerShell is a collection of multiple values stored in a single variable. Arrays allow you to store and manipulate lists of data efficiently.

Declaring an Array using @()

The proper way to initialize an array in PowerShell is by using the @() syntax. Here’s how you can create an array with three string elements:

$data = @('apple', 'ball', 'cat')

Output:

apple
ball
cat

Creating an Empty Array

If you need an empty array that will be filled later, declare it using:

$data = @()

Getting the Data Type of an Array

You can check the type of an array using the .GetType() method:

$data.GetType()

Output:

IsPublic IsSerial Name       BaseType    
-------- -------- ----       --------    
True     True     Object[]   System.Array

Accessing Elements in an Array

Arrays are zero-indexed, meaning the first item is at index [0].

$data[0]  # Retrieves the first item

Output:

apple

To access the last element of an array dynamically, use:

$data[-1]

Output:

cat

Adding Items to an Array

Since PowerShell arrays are immutable, you cannot directly add items like in Python or JavaScript. Instead, you need to create a new array that includes the additional item:

$data += 'dog'

Output:

apple
ball
cat
dog

Removing Items from an Array

To remove an item, use array filtering:

$data = $data | Where-Object { $_ -ne 'ball' }

Output:

apple
cat
dog

Working with Hash Tables in PowerShell

What is a Hash Table?

A hash table is a key-value storage structure that allows you to retrieve values using unique keys efficiently. Hash tables are also known as dictionaries or associative arrays.

Creating a Hash Table

To declare a hash table in PowerShell, use the @{} syntax:

$hash = @{Fruit = "Apple"; Color = "Red"; Count = 5 }

Viewing Hash Table Contents

$hash

Output:

Name   Value
----   -----
Fruit  Apple
Color  Red
Count  5

Accessing Values in a Hash Table

You can access values using their keys:

$hash['Color']

Output:

Red

Alternatively, you can use dot notation:

$hash.Count

Output:

5

Adding and Removing Items in a Hash Table

Adding a New Key-Value Pair

$hash['Shape'] = 'Round'

Removing a Key-Value Pair

$hash.Remove('Color')

Creating Ordered Dictionaries in PowerShell

Why Use an Ordered Dictionary?

A hash table does not maintain insertion order, but an ordered dictionary does. This is useful when the sequence of data matters.

Declaring an Ordered Dictionary

Use the [ordered] attribute:

$dict = [ordered]@{Fruit = "Apple"; Color = "Red"; Count = 5 }

Accessing Ordered Dictionary Elements

$dict['Fruit']

Output:

Apple

Maintaining Order

If you print a normal hash table multiple times, the order might change. However, with an ordered dictionary, the order remains consistent.

$dict

Output:

Name   Value
----   -----
Fruit  Apple
Color  Red
Count  5

Hash Table vs. Ordered Dictionary: Key Differences

Feature Hash Table Ordered Dictionary
Maintains Order? ❌ No ✅ Yes
Access Speed ✅ Fast ✅ Fast
Best For Random access data Preserving key order

Real-World Use Cases

Use Case 1: Storing User Information (Ordered Dictionary Example)

$user = [ordered]@{
    Name = "John Doe"
    Email = "johndoe@example.com"
    Role = "Admin"
}

Use Case 2: Counting Occurrences of Words (Hash Table Example)

$text = "apple banana apple orange apple banana"
$wordCount = @{}

$text.Split() | ForEach-Object {
    if ($wordCount.ContainsKey($_)) {
        $wordCount[$_] += 1
    } else {
        $wordCount[$_] = 1
    }
}

$wordCount

Output:

Name   Value
----   -----
apple  3
banana 2
orange 1

Conclusion

PowerShell provides arrays, hash tables, and ordered dictionaries to store and manipulate data efficiently.

  • Use arrays (@()) when working with a list of values.
  • Use hash tables (@{}) for key-value storage without order constraints.
  • Use ordered dictionaries ([ordered]@{}) when preserving the insertion order is essential.

Mastering these data structures will enhance your scripting efficiency and automation capabilities in PowerShell. 🚀

Frequently Asked Questions (FAQ)

What is the difference between a hash table and a dictionary in PowerShell?

In PowerShell, a hash table and a dictionary are often used interchangeably. However, dictionaries are part of the .NET framework (System.Collections.Hashtable), while hash tables in PowerShell (@{}) are built-in and optimized for PowerShell scripting.

How do I add or remove items from a PowerShell array?

Since arrays are immutable in PowerShell, you cannot modify them directly. Instead, use:

  • Adding an item: $array += 'newItem'
  • Removing an item: $array = $array | Where-Object { $_ -ne 'itemToRemove' }

Can I sort a hash table in PowerShell?

Yes, you can use an ordered dictionary ([ordered]@{}) or convert the hash table to an ordered format using:

$sortedHash = $hash.GetEnumerator() | Sort-Object Name
$sortedHash

This ensures that keys are displayed in alphabetical order.

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Related Article - PowerShell Array