Bird
Raised Fist0
PowerShellscripting~20 mins

Group-Object for categorization in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PowerShell Group-Object Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of Group-Object by Property
What is the output of this PowerShell command grouping processes by their ProcessName property?
PowerShell
Get-Process | Group-Object -Property ProcessName | Select-Object -First 3 | Format-Table Name,Count -AutoSize
A
Name       Count
----       -----
powershell  1
chrome      3
explorer    2
B
Name       Count
----       -----
powershell  2
chrome      3
explorer    1
C
Name       Count
----       -----
powershell  2
chrome      5
explorer    1
D
Name       Count
----       -----
powershell  3
chrome      5
explorer    1
Attempts:
2 left
💡 Hint
Think about how many instances of each process are typically running and how Group-Object counts them.
🧠 Conceptual
intermediate
1:30remaining
Understanding Group-Object Output Structure
Which property of the output objects from Group-Object contains the list of grouped items?
AGroup
BCount
CName
DValue
Attempts:
2 left
💡 Hint
Look for the property that holds the actual items grouped together.
📝 Syntax
advanced
2:00remaining
Correct Syntax for Grouping by Multiple Properties
Which option correctly groups services by both Status and StartType properties?
AGet-Service | Group-Object -Property Status, StartType
BGet-Service | Group-Object -Property Status; StartType
CGet-Service | Group-Object -Property @('Status', 'StartType')
DGet-Service | Group-Object -Property Status StartType
Attempts:
2 left
💡 Hint
Remember how to pass multiple properties as an array in PowerShell.
🔧 Debug
advanced
1:30remaining
Identify the Error in Group-Object Usage
What error will this command produce? Get-Process | Group-Object -Property
PowerShell
Get-Process | Group-Object -Property
AParameterBindingException: Missing argument for parameter 'Property'.
BRuntimeException: Cannot group without a property name.
CNo error, groups by default property.
DSyntaxError: Unexpected end of command.
Attempts:
2 left
💡 Hint
Check if the required parameter is missing its value.
🚀 Application
expert
2:30remaining
Count Unique File Extensions in a Folder
You want to count how many files of each extension exist in a folder using PowerShell. Which command produces the correct output?
AGet-ChildItem -File | Group-Object -Property FullName | Select-Object Name,Count
BGet-ChildItem -File | Group-Object -Property Name | Select-Object Name,Count
CGet-ChildItem -File | Group-Object -Property Length | Select-Object Name,Count
DGet-ChildItem -File | Group-Object -Property Extension | Select-Object Name,Count
Attempts:
2 left
💡 Hint
Think about which property holds the file extension.

Practice

(1/5)
1. What does the PowerShell cmdlet Group-Object do?
easy
A. It deletes duplicate objects.
B. It sorts objects alphabetically.
C. It groups objects based on a property value.
D. It converts objects to strings.

Solution

  1. Step 1: Understand the purpose of Group-Object

    The cmdlet groups input objects by a specified property value, organizing them into categories.
  2. Step 2: Compare options with the cmdlet's function

    Only It groups objects based on a property value. correctly describes grouping by property value; others describe different actions.
  3. Final Answer:

    It groups objects based on a property value. -> Option C
  4. Quick Check:

    Group-Object groups by property [OK]
Hint: Group-Object categorizes by property value, not sorting or deleting [OK]
Common Mistakes:
  • Confusing grouping with sorting
  • Thinking it removes duplicates
  • Assuming it converts data types
2. Which of the following is the correct syntax to group processes by their ProcessName property?
easy
A. Get-Process | Group-Object -Property ProcessName
B. Get-Process | Group-Object -ProcessName
C. Get-Process | Group-Object -Name ProcessName
D. Get-Process | Group-Object /Property ProcessName

Solution

  1. Step 1: Identify correct parameter for grouping property

    The correct parameter is '-Property' to specify the property to group by.
  2. Step 2: Check syntax correctness

    Get-Process | Group-Object -Property ProcessName uses the correct syntax: 'Group-Object -Property ProcessName'. Options A and C use wrong parameter names; D uses invalid syntax.
  3. Final Answer:

    Get-Process | Group-Object -Property ProcessName -> Option A
  4. Quick Check:

    Use '-Property' to specify grouping property [OK]
Hint: Use '-Property' to specify grouping key in Group-Object [OK]
Common Mistakes:
  • Omitting the dash before 'Property'
  • Using '-Name' instead of '-Property'
  • Using invalid syntax like slashes
3. What will be the output count of groups when running this command?
Get-Process | Group-Object -Property CPU | Measure-Object | Select-Object -ExpandProperty Count

Assuming multiple processes share the same CPU time value.
medium
A. The number of CPU cores on the machine.
B. The total number of processes running.
C. Always 1 because CPU is a single value.
D. The number of unique CPU time values among processes.

Solution

  1. Step 1: Understand Group-Object output

    Group-Object groups items by unique values of the specified property, here 'CPU'.
  2. Step 2: Interpret Measure-Object Count

    Measure-Object counts how many groups were created, which equals the number of unique CPU values among processes.
  3. Final Answer:

    The number of unique CPU time values among processes. -> Option D
  4. Quick Check:

    Group count = unique property values [OK]
Hint: Group count equals unique property values, not total items [OK]
Common Mistakes:
  • Confusing group count with total items
  • Assuming CPU property is always unique
  • Thinking it relates to CPU cores
4. You run this command but get an error:
Get-Service | Group-Object -Property

What is the most likely cause?
medium
A. Missing property name after -Property parameter.
B. Get-Service does not output objects.
C. Group-Object cannot group services.
D. The pipeline operator '|' is missing.

Solution

  1. Step 1: Check the command syntax

    The '-Property' parameter requires a property name to group by, which is missing here.
  2. Step 2: Validate other options

    Get-Service outputs objects, Group-Object can group them, and the pipeline operator is present, so these are not causes.
  3. Final Answer:

    Missing property name after -Property parameter. -> Option A
  4. Quick Check:

    Always specify property name after '-Property' [OK]
Hint: Always provide property name after '-Property' [OK]
Common Mistakes:
  • Leaving '-Property' without a value
  • Assuming Get-Service outputs text only
  • Thinking Group-Object can't group services
5. You want to group a list of files by their extension and count how many files each extension has. Which command correctly achieves this?
hard
A. Get-ChildItem | Group-Object -Property Name | Select-Object Extension, Count
B. Get-ChildItem | Group-Object -Property Extension | Select-Object Name, Count
C. Get-ChildItem | Group-Object -Property Length | Select-Object Extension, Count
D. Get-ChildItem | Group-Object -Property FullName | Select-Object Extension, Count

Solution

  1. Step 1: Identify property to group files by extension

    The 'Extension' property holds the file extension, so grouping by it categorizes files by type.
  2. Step 2: Select correct output properties

    Selecting 'Name' (the group name, i.e., extension) and 'Count' shows the extension and how many files have it.
  3. Final Answer:

    Get-ChildItem | Group-Object -Property Extension | Select-Object Name, Count -> Option B
  4. Quick Check:

    Group by Extension, select Name and Count [OK]
Hint: Group by Extension, then select Name and Count to see totals [OK]
Common Mistakes:
  • Grouping by Name instead of Extension
  • Selecting wrong properties after grouping
  • Grouping by file size or full path mistakenly
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