Bird
Raised Fist0
PowerShellscripting~20 mins

Why PowerShell is object-oriented - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PowerShell Object Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output type of this PowerShell command?
Consider the following PowerShell command:
Get-Process | Select-Object -First 1

What type of object does this command output?
PowerShell
Get-Process | Select-Object -First 1 | Get-Member -MemberType Property
AA string representing the process name
BA plain text table with no object properties
CA numeric value representing process ID
DAn object with properties describing the process
Attempts:
2 left
💡 Hint
Think about what Get-Process returns and how PowerShell treats output.
🧠 Conceptual
intermediate
1:30remaining
Why does PowerShell treat output as objects?
Why does PowerShell output objects instead of plain text like many other shells?
ABecause objects allow easy access to properties and methods for automation
BBecause text output is slower to display on screen
CBecause PowerShell cannot handle text output
DBecause objects use less memory than text
Attempts:
2 left
💡 Hint
Think about how automation scripts benefit from structured data.
🔧 Debug
advanced
2:00remaining
Identify the error in this PowerShell pipeline
What error occurs when running this command?
Get-Process | Where-Object { $_.Name -eq 'notepad' } | Select-Object CPU
PowerShell
Get-Process | Where-Object { $_.Name -eq 'notepad' } | Select-Object CPU
ANo error; outputs CPU property of notepad processes
BSyntax error due to missing parentheses
CError: Property 'CPU' does not exist on some objects
DRuntime error because 'notepad' process does not exist
Attempts:
2 left
💡 Hint
Check if the CPU property exists on process objects.
🚀 Application
advanced
2:00remaining
Extracting object properties in PowerShell
You want to list the names and IDs of all running processes. Which command produces the correct output?
AGet-Process | Format-Table Name, Id
BGet-Process | Select-Object Name, Id
CGet-Process | Where-Object { Name, Id }
DGet-Process | ForEach-Object { $_.Name + $_.Id }
Attempts:
2 left
💡 Hint
Select-Object extracts properties as objects; Format-Table formats output but does not produce objects.
📝 Syntax
expert
2:30remaining
What is the output of this PowerShell object method call?
Given this code:
$proc = Get-Process -Id $PID
$proc.ToString()

What is the output?
AThe process ID number as a string
BThe string 'System.Diagnostics.Process'
CThe process name of the current PowerShell session
DAn error because ToString() is not a method
Attempts:
2 left
💡 Hint
Process class overrides ToString() to return the ProcessName property.

Practice

(1/5)
1. Why is PowerShell considered an object-oriented scripting language?
easy
A. Because it uses objects with properties and methods to handle data
B. Because it only works with text files
C. Because it requires classes to run scripts
D. Because it cannot handle variables

Solution

  1. Step 1: Understand what object-oriented means in PowerShell

    PowerShell treats data as objects that have properties (data) and methods (actions).
  2. Step 2: Identify why this matters

    This allows scripts to easily access and manipulate data in a structured way.
  3. Final Answer:

    Because it uses objects with properties and methods to handle data -> Option A
  4. Quick Check:

    Object-oriented = uses objects with properties and methods [OK]
Hint: Objects have properties and methods, not just text [OK]
Common Mistakes:
  • Thinking PowerShell only works with text
  • Believing classes are always required
  • Assuming variables cannot hold objects
2. Which of the following is the correct way to access the 'Length' property of a string object in PowerShell?
easy
A. $string.Length()
B. $string.Length
C. Length($string)
D. $string->Length

Solution

  1. Step 1: Recall property access syntax in PowerShell

    Properties are accessed using dot notation without parentheses.
  2. Step 2: Apply to 'Length' property

    Use $string.Length to get the length of the string.
  3. Final Answer:

    $string.Length -> Option B
  4. Quick Check:

    Properties use dot notation without () [OK]
Hint: Use dot and property name without parentheses [OK]
Common Mistakes:
  • Adding parentheses to properties
  • Using function-like syntax for properties
  • Using arrow notation which is not valid
3. What will be the output of this PowerShell code?
$date = Get-Date
$date.DayOfWeek
medium
A. The current day of the week as a string, like 'Monday'
B. An error because DayOfWeek is not a property
C. The current date in MM/DD/YYYY format
D. The time part of the date only

Solution

  1. Step 1: Understand Get-Date output

    Get-Date returns a DateTime object with many properties including DayOfWeek.
  2. Step 2: Access DayOfWeek property

    $date.DayOfWeek returns the day of the week as a string like 'Monday'.
  3. Final Answer:

    The current day of the week as a string, like 'Monday' -> Option A
  4. Quick Check:

    DayOfWeek property returns day name [OK]
Hint: Get-Date returns object; DayOfWeek is a property [OK]
Common Mistakes:
  • Expecting a date string instead of day name
  • Thinking DayOfWeek is a method needing ()
  • Assuming it returns time or error
4. Identify the error in this PowerShell script:
$file = Get-Item 'C:\temp\file.txt'
$size = $file.Length()
Write-Output $size
medium
A. File path must use forward slashes
B. Get-Item cannot get file information
C. Write-Output cannot print variables
D. Using parentheses after 'Length' property causes an error

Solution

  1. Step 1: Check property access syntax

    Properties like 'Length' are accessed without parentheses in PowerShell.
  2. Step 2: Identify the error

    $file.Length() tries to call 'Length' as a method, causing an error.
  3. Final Answer:

    Using parentheses after 'Length' property causes an error -> Option D
  4. Quick Check:

    Properties do not use () [OK]
Hint: Properties never have () after them [OK]
Common Mistakes:
  • Adding () to properties
  • Thinking Get-Item can't get file info
  • Believing Write-Output can't print variables
5. You want to list all running processes and display their names and memory usage using PowerShell objects. Which script correctly uses object properties to do this?
hard
A. Get-Process | ForEach-Object { '$_.Name uses $_.WorkingSet64 bytes' }
B. Get-Process | ForEach-Object { "$_.Name uses $_.WorkingSet64() bytes" }
C. Get-Process | ForEach-Object { $_.Name + ' uses ' + $_.WorkingSet64 + ' bytes' }
D. Get-Process | ForEach-Object { $_->Name + ' uses ' + $_->WorkingSet64 + ' bytes' }

Solution

  1. Step 1: Understand property access and string concatenation

    Properties are accessed with dot notation without parentheses. Concatenate strings with + in PowerShell.
  2. Step 2: Analyze each option

    A uses quotes with variables inside strings incorrectly (no expansion). B uses () on property causing error. C uses invalid arrow notation. D correctly concatenates properties and strings.
  3. Final Answer:

    Get-Process | ForEach-Object { $_.Name + ' uses ' + $_.WorkingSet64 + ' bytes' } -> Option C
  4. Quick Check:

    Use dot notation and + for string concat [OK]
Hint: Use dot notation and + for strings, no () or arrows [OK]
Common Mistakes:
  • Using () after properties
  • Using arrow notation -> which is invalid
  • Expecting variables to expand inside single quotes
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