Bird
Raised Fist0
PowerShellscripting~10 mins

Adding properties to objects in PowerShell - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Adding properties to objects
Create object
↓
Add new property
↓
Property added to object
↓
Use updated object
Start with an object, add a new property to it, then use the updated object with the new property.
Execution Sample
PowerShell
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name 'Age' -Value 30
$obj.Age
Creates an object, adds a property 'Age' with value 30, then outputs the Age property.
Execution Table
StepActionObject StateOutput
1Create empty object $objObject with no properties
2Add property 'Age' with value 30Object with property Age=30
3Access $obj.AgeObject unchanged30
💡 All steps complete, property added and accessed successfully.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3
$objnullEmpty objectObject with Age=30Object with Age=30
$obj.AgenullError3030
Key Moments - 2 Insights
Why does $obj.Age return an error before adding the property?
Before Step 2 in the execution_table, the object has no 'Age' property, so accessing $obj.Age fails.
Does Add-Member change the original object or create a new one?
Add-Member modifies the original object in place, as shown by the object state change from Step 1 to Step 2.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output at Step 3?
Anull
B30
CError
DEmpty string
💡 Hint
Check the Output column at Step 3 in the execution_table.
At which step does the object gain the 'Age' property?
AStep 2
BStep 1
CStep 3
DNever
💡 Hint
Look at the Object State column changes between Step 1 and Step 2.
If you tried to access $obj.Age before Step 2, what would happen?
AIt would output 30
BIt would output null
CIt would cause an error
DIt would output an empty string
💡 Hint
Refer to the key_moments explanation about accessing properties before they exist.
Concept Snapshot
Create an object with New-Object PSObject
Add a property using Add-Member -MemberType NoteProperty -Name 'Prop' -Value val
Access the property with $obj.Prop
Add-Member modifies the original object
Accessing a property before adding it causes an error
Full Transcript
This example shows how to add a property to a PowerShell object. First, we create an empty object with New-Object PSObject. Then, we add a new property called 'Age' with the value 30 using Add-Member. Finally, we access the Age property, which outputs 30. Before adding the property, trying to access it would cause an error because it does not exist yet. Add-Member changes the original object by adding the property directly.

Practice

(1/5)
1. What does the Add-Member cmdlet do in PowerShell when working with objects?
easy
A. It converts an object to a string.
B. It adds new properties or methods to an existing object.
C. It creates a new object from scratch.
D. It deletes properties from an object.

Solution

  1. Step 1: Understand Add-Member purpose

    Add-Member is used to add new properties or methods to an existing object without creating a new object.
  2. Step 2: Compare options

    Options A, B, and C describe converting, deleting, or creating objects, which are not the purpose of Add-Member.
  3. Final Answer:

    It adds new properties or methods to an existing object. -> Option B
  4. Quick Check:

    Add-Member adds properties/methods [OK]
Hint: Add-Member adds properties or methods to existing objects [OK]
Common Mistakes:
  • Thinking Add-Member creates new objects
  • Confusing Add-Member with Remove-Item
  • Assuming Add-Member converts objects to strings
2. Which of the following is the correct syntax to add a NoteProperty named Age with value 30 to an existing object $person?
easy
A. Add-Member -Object $person -Type NoteProperty -Property Age -Value 30
B. Add-Member -InputObject $person -MemberType NoteProperty -Property Age -Value 30
C. Add-Member -InputObject $person -MemberType Property -Name Age -Value 30
D. Add-Member -InputObject $person -MemberType NoteProperty -Name Age -Value 30

Solution

  1. Step 1: Identify correct parameter names

    The correct parameters for Add-Member are -InputObject, -MemberType, -Name, and -Value.
  2. Step 2: Check member type and property name

    NoteProperty is the correct member type for adding simple properties. The property name is specified with -Name.
  3. Final Answer:

    Add-Member -InputObject $person -MemberType NoteProperty -Name Age -Value 30 -> Option D
  4. Quick Check:

    Correct syntax uses -InputObject, -MemberType, -Name, -Value [OK]
Hint: Use -InputObject, -MemberType NoteProperty, -Name, and -Value [OK]
Common Mistakes:
  • Using -Object instead of -InputObject
  • Using -Property instead of -Name
  • Using MemberType Property instead of NoteProperty
3. What will be the output of this PowerShell code?
$obj = New-Object PSObject
Add-Member -InputObject $obj -MemberType NoteProperty -Name Color -Value 'Red'
Write-Output $obj.Color
medium
A. Red
B. Color
C. PSObject
D. Error: Property not found

Solution

  1. Step 1: Add NoteProperty 'Color' with value 'Red'

    The Add-Member cmdlet adds a property named Color with value 'Red' to the object $obj.
  2. Step 2: Output the property value

    Write-Output $obj.Color accesses the added property and prints its value, which is Red.
  3. Final Answer:

    Red -> Option A
  4. Quick Check:

    Access added property with dot notation [OK]
Hint: Access added properties with dot notation like $obj.Property [OK]
Common Mistakes:
  • Expecting property name instead of value
  • Forgetting to add the property before accessing
  • Using wrong property name in output
4. Identify the error in this PowerShell script that tries to add a property Height to $obj:
$obj = New-Object PSObject
Add-Member -InputObject $obj -MemberType NoteProperty -Property Height -Value 180
Write-Output $obj.Height
medium
A. The value 180 must be a string, not a number.
B. The object $obj is not created properly.
C. The parameter '-Property' should be '-Name' when adding a property.
D. Write-Output cannot access properties added by Add-Member.

Solution

  1. Step 1: Check Add-Member parameters

    The parameter to specify the property name is -Name, not -Property. Using -Property causes an error.
  2. Step 2: Confirm object creation and output

    $obj is correctly created. The value 180 can be a number. Write-Output can access added properties if correctly added.
  3. Final Answer:

    The parameter '-Property' should be '-Name' when adding a property. -> Option C
  4. Quick Check:

    Use -Name to specify property name in Add-Member [OK]
Hint: Use -Name, not -Property, to name new properties [OK]
Common Mistakes:
  • Using -Property instead of -Name
  • Thinking numeric values must be strings
  • Assuming Write-Output can't show added properties
5. You have an object $car with properties Make and Model. You want to add a new property Year only if it does not already exist. Which script correctly does this?
hard
A. if (-not $car.PSObject.Properties.Name -contains 'Year') { Add-Member -InputObject $car -MemberType NoteProperty -Name Year -Value 2023 }
B. if ($car.Year -eq $null) { Add-Member -InputObject $car -MemberType NoteProperty -Name Year -Value 2023 }
C. Add-Member -InputObject $car -MemberType NoteProperty -Name Year -Value 2023 -Force
D. Add-Member -InputObject $car -MemberType NoteProperty -Name Year -Value 2023

Solution

  1. Step 1: Check if property 'Year' exists

    Using $car.PSObject.Properties.Name -contains 'Year' checks if the property exists. The -not negates it to add only if missing.
  2. Step 2: Add property conditionally

    If 'Year' does not exist, Add-Member adds it with value 2023. This avoids errors from duplicate properties.
  3. Final Answer:

    if (-not $car.PSObject.Properties.Name -contains 'Year') { Add-Member -InputObject $car -MemberType NoteProperty -Name Year -Value 2023 } -> Option A
  4. Quick Check:

    Check property existence before adding to avoid duplicates [OK]
Hint: Check property names with $obj.PSObject.Properties.Name before adding [OK]
Common Mistakes:
  • Adding property without checking existence causes errors
  • Using -Force blindly overwrites properties
  • Checking property value instead of existence
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