If you want to handle complex data structures such as storing user data, then you should use a dictionary in PowerShell. In this tutorial, I will explain how to create and use dictionaries in PowerShell with some examples.
What Is a Dictionary in PowerShell?
In PowerShell, a dictionary is a collection of key-value pairs, similar to a hash table. However, dictionaries maintain the order of entries, which can be crucial for certain applications.
Why Use Dictionaries?
- Order Preservation: Unlike hash tables, dictionaries maintain the order of the elements, which can be important for certain tasks.
- Efficiency: They provide efficient lookups, insertions, and deletions.
- Flexibility: Dictionaries can store diverse data types and complex data structures.
Create a Dictionary in PowerShell
To create a dictionary in PowerShell, you can use the System.Collections.Specialized.OrderedDictionary class. Let’s start with a simple example:
# Create an OrderedDictionary
$dictionary = [System.Collections.Specialized.OrderedDictionary]::new()
# Add key-value pairs
$dictionary.Add("JohnDoe", "john.doe@example.com")
$dictionary.Add("JaneSmith", "jane.smith@example.com")
$dictionary.Add("MichaelJohnson", "michael.johnson@example.com")
# Display the dictionary
$dictionaryIn this example, we create an OrderedDictionary and add three key-value pairs representing user names and their email addresses.
Here is the exact output in the screenshot below:

Read Create a Hashtable in PowerShell
Access PowerShell Dictionary Elements
Now, let me show you how to access elements from a dictionary in PowerShell.
You can access elements in a dictionary using their keys. Here’s how you can retrieve and modify values:
# Access a value by key
$email = $dictionary["JaneSmith"]
Write-Output "Jane Smith's Email: $email"
# Modify a value by key
$dictionary["JaneSmith"] = "jane.smith@newdomain.com"
Write-Output "Updated Jane Smith's Email: $dictionary['JaneSmith']"Iterate Over a Dictionary in PowerShell
Now, let me show you how to iterate over a PowerShell dictionary. You can use a foreach loop to process each key-value pair; here is the PowerShell script.
foreach ($key in $dictionary.Keys) {
$value = $dictionary[$key]
Write-Output "$key: $value"
}This loop will output each key-value pair in the dictionary, preserving the order of insertion.
Check out Create CSV Files with Headers in PowerShell
Merge Dictionaries in PowerShell
Now, let me show you how to merge dictionaries in PowerShell. Let me show you an example. Here is an example of merging two dictionaries in PowerShell.
You might encounter scenarios where you need to merge. Here’s how you can do it:
# Create two dictionaries
$dict1 = [System.Collections.Specialized.OrderedDictionary]::new()
$dict1.Add("Key1", "Value1")
$dict1.Add("Key2", "Value2")
$dict2 = [System.Collections.Specialized.OrderedDictionary]::new()
$dict2.Add("Key3", "Value3")
$dict2.Add("Key4", "Value4")
# Merge dictionaries
foreach ($key in $dict2.Keys) {
$dict1.Add($key, $dict2[$key])
}
# Display merged dictionary
$dict1Check if Key Existence in a Python Dictionary
It’s often necessary to check if a key exists in a dictionary before performing operations in PowerShell:
$keyToCheck = "JaneSmith"
if ($dictionary.Contains($keyToCheck)) {
Write-Output "Key '$keyToCheck' exists in the dictionary."
} else {
Write-Output "Key '$keyToCheck' does not exist in the dictionary."
}Read Create Objects in PowerShell
Remove Elements from a Python Dictionary
To remove an element from a dictionary, use the Remove method of PowerShell like below:
$dictionary.Remove("MichaelJohnson")
Write-Output "Removed Michael Johnson. Current dictionary: $dictionary"PowerShell Dictionary Examples
Let me show you some practical examples of using dictionaries in PowerShell.
Example 1: Store and Retrieve User Information
Suppose you are managing a list of employees in a company. You can use a dictionary to store and retrieve their information efficiently.
# Create an OrderedDictionary
$employees = [System.Collections.Specialized.OrderedDictionary]::new()
# Add employee information
$employees.Add("JohnDoe", @{Name="John Doe"; Position="Manager"; Department="Sales"})
$employees.Add("JaneSmith", @{Name="Jane Smith"; Position="Developer"; Department="IT"})
$employees.Add("MichaelJohnson", @{Name="Michael Johnson"; Position="Analyst"; Department="Finance"})
# Retrieve and display information
foreach ($key in $employees.Keys) {
$employee = $employees[$key]
Write-Output "Name: $($employee.Name), Position: $($employee.Position), Department: $($employee.Department)"
}Here is the exact output in the screenshot below:

Example 2: Configuration Management
Dictionaries are ideal for managing configuration settings. Let’s create a configuration dictionary for a web application:
# Create an OrderedDictionary for configuration settings
$config = [System.Collections.Specialized.OrderedDictionary]::new()
# Add configuration settings
$config.Add("DatabaseServer", "dbserver.example.com")
$config.Add("DatabaseName", "WebAppDB")
$config.Add("MaxConnections", 100)
$config.Add("EnableLogging", $true)
# Access and modify settings
Write-Output "Database Server: $($config['DatabaseServer'])"
$config["MaxConnections"] = 200
Write-Output "Updated Max Connections: $($config['MaxConnections'])"Example 3: Logging and Auditing
Dictionaries can be used to store and manage log entries or audit records. This ensures that the order of events is preserved:
# Create a log dictionary
$log = [System.Collections.Specialized.OrderedDictionary]::new()
# Add log entries
$log.Add((Get-Date), "User JohnDoe logged in.")
$log.Add((Get-Date).AddMinutes(5), "User JaneSmith accessed the system.")
# Display log entries
foreach ($timestamp in $log.Keys) {
Write-Output "$timestamp: $($log[$timestamp])"
}Example 4: Data Transformation
Dictionaries are useful for transforming data structures. For instance, converting a CSV file into a dictionary for easier manipulation:
# Import CSV data
$csvData = Import-Csv -Path "C:\data\employees.csv"
# Create a dictionary from CSV data
$employeeDict = [System.Collections.Specialized.OrderedDictionary]::new()
foreach ($row in $csvData) {
$employeeDict.Add($row.EmployeeID, $row)
}
# Access and display data
foreach ($key in $employeeDict.Keys) {
$employee = $employeeDict[$key]
Write-Output "ID: $($employee.EmployeeID), Name: $($employee.Name), Department: $($employee.Department)"
}Conclusion
Dictionaries in PowerShell are useful for managing collections of data. In this tutorial, I explained how to create and use dictionaries in PowerShell with some real examples.
Bijay Kumar is an esteemed author and the mind behind PowerShellFAQs.com, where he shares his extensive knowledge and expertise in PowerShell, with a particular focus on SharePoint projects. Recognized for his contributions to the tech community, Bijay has been honored with the prestigious Microsoft MVP award. With over 15 years of experience in the software industry, he has a rich professional background, having worked with industry giants such as HP and TCS. His insights and guidance have made him a respected figure in the world of software development and administration. Read more.