Bird
Raised Fist0
PowerShellscripting~5 mins

Object arrays in PowerShell

Choose your learning style10 modes available
Introduction
Object arrays let you store many objects together so you can work with them easily, like a list of friends or tasks.
When you want to keep a list of users with their details.
When you need to store multiple files' information to process later.
When you want to collect results from commands and work with them as a group.
When you want to sort or filter a group of objects based on their properties.
When you want to pass multiple objects to a function or script.
Syntax
PowerShell
class Person {
    [string]$Name
    [int]$Age

    Person([string]$name, [int]$age) {
        $this.Name = $name
        $this.Age = $age
    }
}

# Create an array of Person objects
$people = @(
    [Person]::new('Alice', 30),
    [Person]::new('Bob', 25),
    [Person]::new('Charlie', 35)
)
Use @() to create an array in PowerShell.
Objects can be custom classes or built-in types with properties.
Examples
An empty array with no objects inside.
PowerShell
# Empty object array
$emptyArray = @()
An array with just one object inside.
PowerShell
# Array with one object
$singlePerson = @([PSCustomObject]@{Name='Diana'; Age=28})
An array holding two objects with Name and Age properties.
PowerShell
# Array with multiple objects
$people = @(
    [PSCustomObject]@{Name='Eve'; Age=22},
    [PSCustomObject]@{Name='Frank'; Age=40}
)
Get the first object and print its Name property.
PowerShell
# Access first object in array
$firstPerson = $people[0]
Write-Output $firstPerson.Name
Sample Program
This script creates a Person class, makes an array of Person objects, prints them, adds a new Person, then prints the updated list.
PowerShell
class Person {
    [string]$Name
    [int]$Age

    Person([string]$name, [int]$age) {
        $this.Name = $name
        $this.Age = $age
    }
}

# Create an array of Person objects
$people = @(
    [Person]::new('Alice', 30),
    [Person]::new('Bob', 25),
    [Person]::new('Charlie', 35)
)

Write-Output "People before adding new person:"
foreach ($person in $people) {
    Write-Output "$($person.Name), Age $($person.Age)"
}

# Add a new person to the array
$newPerson = [Person]::new('Diana', 28)
$people += $newPerson

Write-Output "`nPeople after adding new person:"
foreach ($person in $people) {
    Write-Output "$($person.Name), Age $($person.Age)"
}
OutputSuccess
Important Notes
Adding an object to an array with += creates a new array behind the scenes, so it is not the fastest for very large arrays.
Access array elements by index starting at 0, like $array[0] for the first object.
Use object arrays when you want to keep related data together and process it easily.
Summary
Object arrays hold many objects together in one variable.
You can create, access, and add objects to these arrays easily.
They help organize data like lists of people or files for scripts.

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