Bird
Raised Fist0
PowerShellscripting~10 mins

Object arrays in PowerShell - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Object arrays
Create empty array
↓
Create object
↓
Add object to array
↓
Repeat for each object
↓
Use array of objects
We create objects, add them to an array, and then use the array to access all objects.
Execution Sample
PowerShell
$obj1 = [PSCustomObject]@{Name='Alice'; Age=30}
$obj2 = [PSCustomObject]@{Name='Bob'; Age=25}
$array = @($obj1, $obj2)
$array | ForEach-Object { $_.Name }
Create two objects with Name and Age, put them in an array, then print each Name.
Execution Table
StepActionVariable StateOutput
1Create object obj1 with Name='Alice', Age=30obj1 = {Name=Alice, Age=30}
2Create object obj2 with Name='Bob', Age=25obj2 = {Name=Bob, Age=25}
3Create array with obj1 and obj2array = [{Name=Alice, Age=30}, {Name=Bob, Age=25}]
4Loop over array and output Name propertyarray unchangedAlice
5Continue looparray unchangedBob
6End looparray unchanged
💡 All objects processed, loop ends.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
obj1undefined{Name=Alice, Age=30}{Name=Alice, Age=30}{Name=Alice, Age=30}{Name=Alice, Age=30}
obj2undefinedundefined{Name=Bob, Age=25}{Name=Bob, Age=25}{Name=Bob, Age=25}
arrayundefinedundefinedundefined[{Name=Alice, Age=30}, {Name=Bob, Age=25}][{Name=Alice, Age=30}, {Name=Bob, Age=25}]
Key Moments - 3 Insights
Why do we use [PSCustomObject] to create objects?
Using [PSCustomObject] creates structured objects with named properties, which can be stored in arrays and accessed easily, as shown in steps 1 and 2.
Can we add objects to the array after creating it?
Yes, but in this example we create the array with objects inside it at once (step 3). You can also add objects later using += operator.
How do we access properties of objects inside the array?
We loop over the array and use $_.PropertyName to access each object's property, as shown in steps 4 and 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of obj2 after step 2?
A{Name=Alice, Age=30}
Bundefined
C{Name=Bob, Age=25}
Dempty array
💡 Hint
Check the 'Variable State' column at step 2 for obj2.
At which step does the array get created with both objects inside?
AStep 1
BStep 3
CStep 2
DStep 4
💡 Hint
Look for the action 'Create array with obj1 and obj2' in the execution table.
If we add a third object to the array, how would the output change in the loop?
AIt would print the Name of all three objects
BIt would print only the first two Names
CIt would cause an error
DIt would print nothing
💡 Hint
Refer to how the loop outputs each object's Name property in steps 4 and 5.
Concept Snapshot
Object arrays in PowerShell:
- Create objects with [PSCustomObject]@{Property=Value}
- Store objects in an array: $array = @($obj1, $obj2)
- Access objects with loops: $array | ForEach-Object { $_.Property }
- Arrays hold multiple objects for easy management
- Use properties to get data from each object
Full Transcript
This example shows how to create objects in PowerShell using [PSCustomObject] with named properties like Name and Age. Then, we put these objects into an array. The array holds multiple objects together. We loop through the array using ForEach-Object and print the Name property of each object. Variables obj1 and obj2 hold the individual objects. The array variable holds both objects. The loop runs twice, printing 'Alice' and then 'Bob'. This method helps organize data as objects inside arrays for easy access and processing.

Practice

(1/5)
1. What is an object array in PowerShell?
easy
A. A type of function that returns objects
B. A single object with many properties
C. A command to create new objects
D. A variable that holds multiple objects together in a list

Solution

  1. Step 1: Understand the definition of object arrays

    An object array is a collection that holds many objects in one variable, like a list.
  2. Step 2: Compare options with the definition

    Only A variable that holds multiple objects together in a list correctly describes an object array as a variable holding multiple objects.
  3. Final Answer:

    A variable that holds multiple objects together in a list -> Option D
  4. Quick Check:

    Object array = list of objects [OK]
Hint: Remember: arrays hold many items together [OK]
Common Mistakes:
  • Confusing object arrays with single objects
  • Thinking object arrays are commands
  • Mixing arrays with functions
2. Which of the following is the correct way to create an empty object array in PowerShell?
easy
A. $array = ()
B. $array = @()
C. $array = new-object array
D. $array = {}

Solution

  1. Step 1: Recall PowerShell syntax for empty arrays

    PowerShell uses @() to create an empty array.
  2. Step 2: Check each option

    $array = @() uses @(), which is correct. $array = () uses (), which assigns $null, not an array. $array = new-object array is incorrect syntax. $array = {} uses {}, which creates a hashtable, not an array.
  3. Final Answer:

    $array = @() -> Option B
  4. Quick Check:

    Empty array syntax = @() [OK]
Hint: Use @() to create empty arrays in PowerShell [OK]
Common Mistakes:
  • Using () which assigns null, not an array
  • Confusing arrays with hashtables {}
  • Trying to use new-object for arrays
3. What will be the output of this PowerShell code?
$array = @()
$array += 'apple'
$array += 'banana'
$array += 'cherry'
$array
medium
A. apple banana cherry
B. @('apple', 'banana', 'cherry')
C. apple banana cherry
D. Error: Cannot add to array

Solution

  1. Step 1: Understand how += adds items to arrays

    Using += adds each string as a new element to the array.
  2. Step 2: Output the array variable

    When output, PowerShell prints each element on a new line, so the output is three lines: apple, banana, cherry.
  3. Final Answer:

    apple banana cherry -> Option A
  4. Quick Check:

    Array elements print line by line [OK]
Hint: Arrays print each item on its own line [OK]
Common Mistakes:
  • Expecting all items on one line separated by spaces
  • Thinking += causes an error on arrays
  • Confusing array output with string output
4. Identify the error in this PowerShell script:
$array = @()
$array += 'one'
$array = $array + 'two'
$array = $array + 3
$array
medium
A. No error; script runs and outputs all items
B. Using + operator on arrays causes error
C. Cannot add integer to string array
D. Array must be declared with fixed size

Solution

  1. Step 1: Check adding different types to array

    PowerShell arrays can hold mixed types, so adding integer 3 is allowed.
  2. Step 2: Check use of + operator on arrays

    Using + concatenates arrays or adds items; it works fine here.
  3. Final Answer:

    No error; script runs and outputs all items -> Option A
  4. Quick Check:

    PowerShell arrays accept mixed types and + works [OK]
Hint: PowerShell arrays can mix types and use + to add items [OK]
Common Mistakes:
  • Thinking arrays only hold one data type
  • Believing + operator causes errors on arrays
  • Assuming arrays need fixed size
5. You have an array of objects representing people:
$people = @(
  [pscustomobject]@{Name='Alice'; Age=30},
  [pscustomobject]@{Name='Bob'; Age=25},
  [pscustomobject]@{Name='Carol'; Age=35}
)

How do you add a new person object with Name='Dave' and Age=40 to this array?
hard
A. $people = @($people, @{Name='Dave'; Age=40})
B. $people = $people + @{Name='Dave'; Age=40}
C. $people += [pscustomobject]@{Name='Dave'; Age=40}
D. $people.Add([pscustomobject]@{Name='Dave'; Age=40})

Solution

  1. Step 1: Create a new person object correctly

    Use [pscustomobject]@{Name='Dave'; Age=40} to create the new object.
  2. Step 2: Add the new object to the existing array

    Use += to add the new object to the $people array. $people += [pscustomobject]@{Name='Dave'; Age=40} does this correctly.
  3. Final Answer:

    $people += [pscustomobject]@{Name='Dave'; Age=40} -> Option C
  4. Quick Check:

    Add object to array using += [OK]
Hint: Use += with new [pscustomobject] to add to array [OK]
Common Mistakes:
  • Forgetting [pscustomobject] and adding plain hashtable
  • Using .Add() which does not work on arrays
  • Reassigning array incorrectly causing nested arrays
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