Bird
Raised Fist0
PowerShellscripting~10 mins

Where-Object for filtering in PowerShell - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to filter processes with CPU usage greater than 100.

PowerShell
Get-Process | Where-Object { $_.CPU [1] 100 }
Drag options to blanks, or click blank then click option'
A-gt
B-lt
C-ne
D-eq
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-lt' which means 'less than' and would filter the wrong processes.
Using '-eq' which means 'equals' and might filter too few processes.
2fill in blank
medium

Complete the code to filter services that are running.

PowerShell
Get-Service | Where-Object { $_.Status [1] 'Running' }
Drag options to blanks, or click blank then click option'
A-lt
B-ne
C-eq
D-gt
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-ne' which means 'not equal' and would filter services that are not running.
Using '-lt' or '-gt' which are for numeric comparisons, not strings.
3fill in blank
hard

Fix the error in the code to filter files larger than 1MB.

PowerShell
Get-ChildItem | Where-Object { $_.Length [1] 1MB }
Drag options to blanks, or click blank then click option'
A-ne
B-gt
C-eq
D-lt
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-lt' which means 'less than' and would filter smaller files.
Using '-eq' which means 'equals' and might filter no files.
4fill in blank
hard

Fill both blanks to filter processes with names starting with 'S' and CPU usage less than 50.

PowerShell
Get-Process | Where-Object { $_.ProcessName [1] 'S*' -and $_.CPU [2] 50 }
Drag options to blanks, or click blank then click option'
A-like
B-eq
C-lt
D-gt
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-eq' instead of '-like' for pattern matching.
Using '-gt' instead of '-lt' for CPU comparison.
5fill in blank
hard

Fill all three blanks to create a dictionary of process names and their CPU usage, filtering only those with CPU usage greater than 10.

PowerShell
$result = @{ [1] = [2].ProcessName; [3] = [2].CPU } | Where-Object { [2].CPU -gt 10 }
Drag options to blanks, or click blank then click option'
AName
B$process
CCPU
D-gt
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names or keys.
Using '-lt' instead of '-gt' for filtering CPU usage.

Practice

(1/5)
1. What does the Where-Object cmdlet do in PowerShell?
easy
A. Filters objects in a collection based on a condition
B. Sorts objects alphabetically
C. Creates new objects from existing ones
D. Deletes objects from a collection

Solution

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

    Where-Object is used to filter items in a collection by applying a condition to each item.
  2. Step 2: Compare options with the purpose

    Only Filters objects in a collection based on a condition correctly describes filtering based on a condition. Sorting, creating, or deleting are different operations.
  3. Final Answer:

    Filters objects in a collection based on a condition -> Option A
  4. Quick Check:

    Where-Object filters collections = A [OK]
Hint: Where-Object selects items matching a condition [OK]
Common Mistakes:
  • Confusing filtering with sorting
  • Thinking it creates or deletes objects
  • Ignoring the condition part
2. Which of the following is the correct syntax to filter processes with CPU usage greater than 100 using Where-Object?
easy
A. Get-Process | Where-Object { CPU > 100 }
B. Get-Process | Where-Object { $_.CPU -gt 100 }
C. Get-Process | Where-Object CPU -gt 100
D. Get-Process | Where-Object CPU > 100

Solution

  1. Step 1: Identify correct use of script block and $_ variable

    Where-Object requires a script block with curly braces and uses $_ to refer to the current object.
  2. Step 2: Check each option's syntax

    Get-Process | Where-Object { $_.CPU -gt 100 } correctly uses { $_.CPU -gt 100 }. Versions without the script block braces {} are incorrect. The version with { CPU > 100 } misses $_ before CPU.
  3. Final Answer:

    Get-Process | Where-Object { $_.CPU -gt 100 } -> Option B
  4. Quick Check:

    { $_.Property -gt value } syntax = D [OK]
Hint: Always use { $_.Property -operator value } inside Where-Object [OK]
Common Mistakes:
  • Omitting curly braces {}
  • Not using $_ to reference current object
  • Writing condition outside script block
3. What will be the output of this command?
1..5 | Where-Object { $_ % 2 -eq 0 }
medium
A. [1, 3, 5]
B. [1, 2, 3, 4, 5]
C. [2, 4]
D. Error: Invalid operator

Solution

  1. Step 1: Understand the input and condition

    The input is numbers 1 to 5. The condition filters numbers where remainder when divided by 2 equals 0 (even numbers).
  2. Step 2: Apply the condition to each number

    Numbers 2 and 4 satisfy the condition (2 % 2 = 0, 4 % 2 = 0). Others do not.
  3. Final Answer:

    [2, 4] -> Option C
  4. Quick Check:

    Filter even numbers = [2, 4] [OK]
Hint: Use modulo (%) to filter even numbers [OK]
Common Mistakes:
  • Confusing even and odd numbers
  • Expecting all numbers as output
  • Thinking syntax causes error
4. Identify the error in this command:
Get-Service | Where-Object $_.Status -eq 'Running'
medium
A. Missing curly braces around the condition
B. Incorrect property name 'Status'
C. Wrong operator used for comparison
D. No error, command is correct

Solution

  1. Step 1: Check Where-Object syntax

    Where-Object requires the condition inside curly braces {} to form a script block.
  2. Step 2: Analyze the given command

    The command misses curly braces around $_.Status -eq 'Running', causing syntax error.
  3. Final Answer:

    Missing curly braces around the condition -> Option A
  4. Quick Check:

    Where-Object needs { condition } [OK]
Hint: Always wrap condition in { } for Where-Object [OK]
Common Mistakes:
  • Omitting curly braces
  • Assuming property names are wrong without checking
  • Confusing operators
5. You have a list of files with sizes in bytes. Which command filters files larger than 1MB (1048576 bytes) and selects only their names?
Get-ChildItem | Where-Object { $_.Length -gt 1048576 } | ???
What should replace ????
hard
A. Sort-Object Length
B. Where-Object Name
C. Format-Table Length
D. Select-Object Name

Solution

  1. Step 1: Understand the filtering part

    Where-Object filters files with Length greater than 1048576 bytes (1MB).
  2. Step 2: Identify how to select only file names

    Select-Object Name extracts only the Name property from the filtered files.
  3. Final Answer:

    Select-Object Name -> Option D
  4. Quick Check:

    Select-Object Name for properties = C [OK]
Hint: Use Select-Object to pick specific properties [OK]
Common Mistakes:
  • Using Where-Object instead of Select-Object to pick properties
  • Sorting instead of selecting
  • Formatting output without selecting needed data
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