Bird
Raised Fist0
PowerShellscripting~20 mins

Custom objects (PSCustomObject) in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PSCustomObject Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
What is the output of this PowerShell code creating a PSCustomObject?

Consider the following PowerShell script:

$obj = [PSCustomObject]@{Name='Alice'; Age=30; City='Seattle'}
$obj | Format-List

What will be the output shown in the console?

PowerShell
$obj = [PSCustomObject]@{Name='Alice'; Age=30; City='Seattle'}
$obj | Format-List
AName: Alice, Age: 30, City: Seattle
B
Name : Alice
Age  : 30
City : Seattle
CName=Alice; Age=30; City=Seattle
D@{Name=Alice; Age=30; City=Seattle}
Attempts:
2 left
💡 Hint

Think about how Format-List displays properties of an object in PowerShell.

🧠 Conceptual
intermediate
1:30remaining
Which statement about PSCustomObject property types is true?

In PowerShell, when you create a PSCustomObject with properties, which of the following is true about the property types?

AAll properties are always strings regardless of assigned value.
BProperties are stored as integers by default.
CProperties keep the data type of the assigned value.
DProperties cannot hold arrays or nested objects.
Attempts:
2 left
💡 Hint

Think about how PowerShell handles variable types when assigning values.

🔧 Debug
advanced
2:00remaining
Why does this PSCustomObject creation script fail?

Examine this PowerShell code snippet:

$obj = [PSCustomObject]@{Name='Bob' Age=25 City='Boston'}

Why does this script produce an error?

AHashtable keys must be integers, not strings.
BPSCustomObject cannot be created with string values.
CThe variable $obj is reserved and cannot be used.
DMissing semicolons between hashtable key-value pairs cause a syntax error.
Attempts:
2 left
💡 Hint

Check the syntax rules for hashtables in PowerShell.

🚀 Application
advanced
2:00remaining
How to add a new property to an existing PSCustomObject?

You have this PSCustomObject:

$person = [PSCustomObject]@{Name='Eve'; Age=28}

Which command correctly adds a new property City with value "Denver" to $person?

A$person | Add-Member -MemberType NoteProperty -Name City -Value 'Denver'
B$person.City = 'Denver'
C$person += @{City='Denver'}
D$person = $person + @{City='Denver'}
Attempts:
2 left
💡 Hint

Think about how to add properties to objects in PowerShell without recreating them.

💻 Command Output
expert
2:00remaining
What is the output of this script creating nested PSCustomObjects?

Consider this PowerShell script:

$address = [PSCustomObject]@{Street='123 Maple St'; City='Austin'}
$person = [PSCustomObject]@{Name='John'; Age=40; Address=$address}
$person.Address.City

What will be the output?

PowerShell
$address = [PSCustomObject]@{Street='123 Maple St'; City='Austin'}
$person = [PSCustomObject]@{Name='John'; Age=40; Address=$address}
$person.Address.City
AAustin
BError: Property 'City' not found
CJohn
D123 Maple St
Attempts:
2 left
💡 Hint

Think about how nested objects work and how to access their properties.

Practice

(1/5)
1. What is the main purpose of using [PSCustomObject] in PowerShell?
easy
A. To convert strings into numbers
B. To create objects with named properties for organizing related data
C. To create arrays of numbers automatically
D. To run commands faster in PowerShell

Solution

  1. Step 1: Understand what [PSCustomObject] does

    [PSCustomObject] creates an object with named properties to hold related data clearly.
  2. Step 2: Compare options

    Only "To create objects with named properties for organizing related data" correctly describes this purpose. Other options describe unrelated tasks.
  3. Final Answer:

    To create objects with named properties for organizing related data -> Option B
  4. Quick Check:

    Purpose of [PSCustomObject] = Organize data [OK]
Hint: Remember: [PSCustomObject] groups data with names [OK]
Common Mistakes:
  • Thinking it speeds up command execution
  • Confusing with arrays or type conversion
  • Assuming it creates numeric sequences
2. Which of the following is the correct syntax to create a custom object with properties Name and Age in PowerShell?
easy
A. [PSCustomObject] @{Name: 'Alice'; Age: 30}
B. @{Name='Alice', Age=30} [PSCustomObject]
C. [PSCustomObject]@{Name='Alice'; Age=30}
D. [PSCustomObject]@{Name='Alice' Age=30}

Solution

  1. Step 1: Recall correct syntax for custom object creation

    The correct syntax uses [PSCustomObject]@{PropertyName='Value'; PropertyName2=Value2} with semicolons separating properties.
  2. Step 2: Analyze each option

    [PSCustomObject]@{Name='Alice'; Age=30} matches the correct syntax. @{Name='Alice', Age=30} [PSCustomObject] reverses order. [PSCustomObject] @{Name: 'Alice'; Age: 30} uses colons instead of equals. [PSCustomObject]@{Name='Alice' Age=30} misses semicolon between properties.
  3. Final Answer:

    [PSCustomObject]@{Name='Alice'; Age=30} -> Option C
  4. Quick Check:

    Correct syntax uses semicolons and equals [OK]
Hint: Use semicolons and equals inside @{ } with [PSCustomObject] [OK]
Common Mistakes:
  • Using commas instead of semicolons
  • Placing [PSCustomObject] after the hashtable
  • Using colons instead of equals signs
3. What will be the output of this PowerShell code?
$person = [PSCustomObject]@{Name='Bob'; Age=25}; $person.Name
medium
A. Bob
B. 25
C. @{Name='Bob'; Age=25}
D. Name

Solution

  1. Step 1: Understand object creation and property access

    The variable $person holds a custom object with properties Name and Age. Accessing $person.Name returns the value of the Name property.
  2. Step 2: Determine the output

    The Name property was set to 'Bob', so the output is 'Bob'.
  3. Final Answer:

    Bob -> Option A
  4. Quick Check:

    Access property returns its value [OK]
Hint: Access properties with dot notation to get their values [OK]
Common Mistakes:
  • Expecting the whole object printed
  • Confusing property name with value
  • Using wrong property name
4. Identify the error in this PowerShell code:
$obj = [PSCustomObject]@{Name='Eve' Age=28}
medium
A. Missing semicolon between properties inside the hashtable
B. Incorrect use of square brackets around PSCustomObject
C. Property names must be in double quotes
D. Cannot assign numbers as property values

Solution

  1. Step 1: Check hashtable property separators

    Properties inside the hashtable must be separated by semicolons. Here, Name='Eve' and Age=28 are missing a semicolon between them.
  2. Step 2: Verify other syntax elements

    Square brackets around PSCustomObject are correct. Property names do not require quotes. Numbers can be property values.
  3. Final Answer:

    Missing semicolon between properties inside the hashtable -> Option A
  4. Quick Check:

    Separate properties with semicolons [OK]
Hint: Separate each property with a semicolon inside @{ } [OK]
Common Mistakes:
  • Using commas instead of semicolons
  • Adding quotes around property names unnecessarily
  • Thinking numbers can't be property values
5. You want to create a list of custom objects representing books with properties Title and Author. Which PowerShell code correctly creates an array of two such objects?
hard
A. [PSCustomObject]@{Title='1984', Author='Orwell'; Title='Dune', Author='Herbert'}
B. [PSCustomObject]@{Title='1984', Author='Orwell'}, [PSCustomObject]@{Title='Dune'; Author='Herbert'}
C. @{Title='1984'; Author='Orwell'}, @{Title='Dune'; Author='Herbert'}
D. @([PSCustomObject]@{Title='1984'; Author='Orwell'}, [PSCustomObject]@{Title='Dune'; Author='Herbert'})

Solution

  1. Step 1: Understand how to create multiple custom objects in an array

    Each book must be a separate [PSCustomObject]. To create an array, wrap the objects in @( ) and separate them with commas.
  2. Step 2: Analyze each option

    @([PSCustomObject]@{Title='1984'; Author='Orwell'}, [PSCustomObject]@{Title='Dune'; Author='Herbert'}) correctly creates two separate custom objects inside an array. [PSCustomObject]@{Title='1984', Author='Orwell'}, [PSCustomObject]@{Title='Dune'; Author='Herbert'} uses comma instead of semicolon in the first hashtable, causing a syntax error. @{Title='1984'; Author='Orwell'}, @{Title='Dune'; Author='Herbert'} creates hashtables, not custom objects. [PSCustomObject]@{Title='1984', Author='Orwell'; Title='Dune', Author='Herbert'} tries to combine two books in one object incorrectly.
  3. Final Answer:

    @([PSCustomObject]@{Title='1984'; Author='Orwell'}, [PSCustomObject]@{Title='Dune'; Author='Herbert'}) -> Option D
  4. Quick Check:

    Use array @( ) with separate custom objects [OK]
Hint: Wrap multiple [PSCustomObject]s in @( ) separated by commas [OK]
Common Mistakes:
  • Using commas instead of semicolons inside hashtables
  • Using hashtables instead of custom objects
  • Combining multiple items in one object incorrectly
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