Bird
Raised Fist0
PowerShellscripting~5 mins

Hash tables (dictionaries) in PowerShell - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a hash table in PowerShell?
A hash table is a collection of key-value pairs. It lets you store and quickly find data by using a unique key, like a labeled box for your information.
Click to reveal answer
beginner
How do you create an empty hash table in PowerShell?
You create an empty hash table using @{} like this:
$myHash = @{}
Click to reveal answer
beginner
How do you add a key-value pair to a hash table?
Use the syntax:
$hashTable["key"] = "value"
This adds or updates the value for the given key.
Click to reveal answer
beginner
How do you access a value from a hash table by its key?
Use the key inside square brackets:
$value = $hashTable["key"]
This gets the value stored for that key.
Click to reveal answer
beginner
What happens if you try to access a key that does not exist in a hash table?
PowerShell returns nothing (null). It does not cause an error, but you get no value back.
Click to reveal answer
Which symbol is used to create a hash table in PowerShell?
A()
B[]
C{}
D@{}
How do you add a new key 'Name' with value 'Alice' to a hash table $h?
A$h.Add('Name', 'Alice')
B$h['Name'] = 'Alice'
C$h.Name = 'Alice'
D$h->Name = 'Alice'
What does $h['Age'] return if 'Age' is not a key in $h?
ANull (no value)
BAn error
C0
DThe string 'Age'
How do you create a hash table with keys 'City' and 'Country' and values 'Paris' and 'France'?
A$h = @{City='Paris'; Country='France'}
B$h = ['City'='Paris', 'Country'='France']
C$h = {'City':'Paris', 'Country':'France'}
D$h = (City='Paris', Country='France')
Which of these is NOT a valid way to access a hash table value?
A$h['Key']
B$h.Key
C$h->Key
D$h.Get_Item('Key')
Explain how to create, add to, and retrieve data from a hash table in PowerShell.
Think of a hash table as a labeled box where you put and get items by their labels.
You got /3 concepts.
    What happens when you try to get a value from a hash table using a key that does not exist? How can this behavior be useful?
    Consider how you might safely check for data without breaking your script.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the correct way to create an empty hash table in PowerShell?
      easy
      A. ()
      B. []
      C. @{}
      D. {}

      Solution

      1. Step 1: Understand hash table syntax in PowerShell

        PowerShell uses @{} to define hash tables, which store key-value pairs.
      2. Step 2: Identify the empty hash table syntax

        An empty hash table has no key-value pairs inside, so it is @{}.
      3. Final Answer:

        @{} -> Option C
      4. Quick Check:

        Empty hash table = @{ } [OK]
      Hint: Use @{} to create hash tables in PowerShell [OK]
      Common Mistakes:
      • Using {} which is a script block, not a hash table
      • Using [] which is an array, not a hash table
      • Using () which is for grouping or method calls
      2. Which of the following is the correct syntax to add a key-value pair 'Name' = 'Alice' to an existing hash table $person?
      easy
      A. $person[Name] = 'Alice'
      B. $person.Name = Alice
      C. $person->Add('Name', 'Alice')
      D. $person.Add('Name', 'Alice')

      Solution

      1. Step 1: Recall how to add key-value pairs to hash tables

        PowerShell hash tables have an Add() method to add new keys and values.
      2. Step 2: Identify correct method call syntax

        The correct syntax is $person.Add('Name', 'Alice'). Note that the Add() method specifically adds new entries.
      3. Final Answer:

        $person.Add('Name', 'Alice') -> Option D
      4. Quick Check:

        Add key-value with Add() method [OK]
      Hint: Use Add() method to add new keys to hash tables [OK]
      Common Mistakes:
      • Using -> which is not PowerShell syntax
      • Using dot notation with unquoted value
      • Using unquoted key in square brackets
      3. What will be the output of this PowerShell code?
      $hash = @{ 'a' = 1; 'b' = 2 }
      $hash['a'] = 3
      $hash['c'] = 4
      $hash['b']
      medium
      A. 2
      B. 1
      C. 3
      D. 4

      Solution

      1. Step 1: Understand the initial hash table and updates

        The hash table starts with keys 'a' = 1 and 'b' = 2. Then 'a' is updated to 3, and a new key 'c' = 4 is added.
      2. Step 2: Identify the value accessed

        The code outputs $hash['b'], which was never changed and remains 2.
      3. Final Answer:

        2 -> Option A
      4. Quick Check:

        Access unchanged key 'b' = 2 [OK]
      Hint: Check which key is accessed after updates [OK]
      Common Mistakes:
      • Confusing updated key 'a' with accessed key 'b'
      • Assuming last added key 'c' is accessed
      • Mixing values of different keys
      4. Identify the error in this PowerShell code snippet:
      $ht = @{ 'x' = 10 }
      $ht.Add('x', 20)
      medium
      A. Runtime error: key 'x' already exists
      B. Syntax error in hash table creation
      C. No error, code runs fine
      D. Add method does not exist for hash tables

      Solution

      1. Step 1: Understand hash table initialization

        The hash table $ht is created with key 'x' = 10.
      2. Step 2: Analyze the Add() method call

        Calling $ht.Add('x', 20) tries to add a duplicate key 'x', which causes a runtime error.
      3. Final Answer:

        Runtime error: key 'x' already exists -> Option A
      4. Quick Check:

        Adding duplicate key causes runtime error [OK]
      Hint: Add() fails if key already exists in hash table [OK]
      Common Mistakes:
      • Assuming Add() updates existing keys
      • Thinking Add() method doesn't exist
      • Confusing syntax error with runtime error
      5. You have a list of users and their ages:
      $users = @('Alice', 'Bob', 'Charlie')
      $ages = @(25, 30, 35)

      Which PowerShell code correctly creates a hash table mapping each user to their age?
      hard
      A. $userAges = @{}; foreach ($user in $users) { $userAges.Add($user, $ages) }
      B. $userAges = @{}; for ($i=0; $i -lt $users.Count; $i++) { $userAges[$users[$i]] = $ages[$i] }
      C. $userAges = @{}; $users | ForEach-Object { $userAges.Add($_, $ages[$_]) }
      D. $userAges = @{}; for ($i=0; $i -le $users.Count; $i++) { $userAges[$i] = $ages[$i] }

      Solution

      1. Step 1: Understand the goal

        Create a hash table where each user name is a key and their corresponding age is the value.
      2. Step 2: Analyze each option

        $userAges = @{}; for ($i=0; $i -lt $users.Count; $i++) { $userAges[$users[$i]] = $ages[$i] } uses a for loop with index to assign each user key to the correct age value. $userAges = @{}; foreach ($user in $users) { $userAges.Add($user, $ages) } tries to add all ages at once, which is incorrect. $userAges = @{}; $users | ForEach-Object { $userAges.Add($_, $ages[$_]) } uses $_ as index but $_ is the user string, not an index. $userAges = @{}; for ($i=0; $i -le $users.Count; $i++) { $userAges[$i] = $ages[$i] } loops one too many times and uses numeric keys instead of user names.
      3. Final Answer:

        $userAges = @{}; for ($i=0; $i -lt $users.Count; $i++) { $userAges[$users[$i]] = $ages[$i] } -> Option B
      4. Quick Check:

        Use indexed loop to map keys to values [OK]
      Hint: Use index loop to map two lists into hash table [OK]
      Common Mistakes:
      • Using foreach without index to access parallel array
      • Using wrong loop bounds causing errors
      • Assigning numeric keys instead of user names
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard