Bird
Raised Fist0
PowerShellscripting~15 mins

Pipeline concept (|) in PowerShell - Mini Project: Build & Apply

Choose your learning style10 modes available
Understanding the Pipeline Concept (|) in PowerShell
📖 Scenario: You are working with a list of fruits and want to find which fruits have names longer than 5 letters. You will use PowerShell's pipeline to filter and display these fruits.
🎯 Goal: Build a simple PowerShell script that uses the pipeline | to filter a list of fruits and display only those with names longer than 5 characters.
📋 What You'll Learn
Create an array called fruits with the exact values: 'Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'
Create a variable called minLength and set it to 6
Use the pipeline | with Where-Object to filter fruits with length greater than or equal to minLength
Print the filtered fruits using Write-Output
💡 Why This Matters
🌍 Real World
Filtering and processing lists of data is common in system administration and automation tasks. The pipeline lets you chain commands to handle data step-by-step.
💼 Career
Understanding the pipeline is essential for PowerShell scripting, which is widely used by IT professionals to automate tasks and manage systems efficiently.
Progress0 / 4 steps
1
Create the fruits array
Create an array called fruits with these exact values: 'Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'
PowerShell
Hint

Use @( ... ) to create an array in PowerShell.

2
Set the minimum length variable
Create a variable called minLength and set it to 6
PowerShell
Hint

Use = to assign the value 6 to minLength.

3
Filter fruits using the pipeline
Use the pipeline | with Where-Object to filter fruits where the length of each fruit's name is greater than or equal to minLength. Use $_ to represent each fruit inside Where-Object.
PowerShell
Hint

Use Where-Object { $_.Length -ge minLength } to filter fruits by length.

4
Display the filtered fruits
Use Write-Output to print the filteredFruits array.
PowerShell
Hint

Use Write-Output $filteredFruits to display the filtered list.

Practice

(1/5)
1. What does the pipeline operator | do in PowerShell?
easy
A. It runs two commands in parallel.
B. It comments out the rest of the line.
C. It creates a new variable.
D. It passes the output of one command as input to the next command.

Solution

  1. Step 1: Understand the pipeline operator

    The pipeline | connects commands so the output of the first command flows as input to the next.
  2. Step 2: Identify the correct description

    Only It passes the output of one command as input to the next command. correctly describes this behavior; others describe unrelated actions.
  3. Final Answer:

    It passes the output of one command as input to the next command. -> Option D
  4. Quick Check:

    Pipeline = Pass output to next command [OK]
Hint: Pipeline passes output to next command in sequence [OK]
Common Mistakes:
  • Thinking pipeline runs commands in parallel
  • Confusing pipeline with comments
  • Assuming pipeline creates variables
2. Which of the following is the correct syntax to list all processes and then sort them by CPU usage using the pipeline?
easy
A. Get-Process Sort CPU
B. Get-Process | Sort-Object CPU
C. Get-Process | Sort-Object -CPU
D. Get-Process Sort-Object CPU

Solution

  1. Step 1: Identify correct pipeline usage

    The pipeline operator | must connect commands properly; Get-Process | Sort-Object CPU uses it correctly.
  2. Step 2: Check Sort-Object parameters

    Sorting by property CPU is done with Sort-Object CPU, which Get-Process | Sort-Object CPU uses correctly.
  3. Final Answer:

    Get-Process | Sort-Object CPU -> Option B
  4. Quick Check:

    Correct pipeline and sorting syntax = Get-Process | Sort-Object CPU [OK]
Hint: Use | between commands and correct parameter names [OK]
Common Mistakes:
  • Omitting the pipeline operator
  • Using wrong parameter syntax like -CPU
  • Using non-existent commands like Sort CPU
3. What is the output of this PowerShell command?
Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object -First 1 -Property ProcessName
medium
A. The name of the first process with CPU usage greater than 100
B. A list of all processes with CPU usage less than 100
C. An error because of incorrect pipeline usage
D. The total CPU usage of all processes

Solution

  1. Step 1: Analyze the pipeline commands

    Get-Process gets all processes, Where-Object { $_.CPU -gt 100 } filters those with CPU > 100.
  2. Step 2: Understand the selection

    Select-Object -First 1 -Property ProcessName picks the first such process and shows its name.
  3. Final Answer:

    The name of the first process with CPU usage greater than 100 -> Option A
  4. Quick Check:

    Pipeline filters then selects first matching process name [OK]
Hint: Filter with Where-Object, then select first with Select-Object [OK]
Common Mistakes:
  • Confusing CPU greater than with less than
  • Expecting a list instead of one item
  • Thinking pipeline causes errors here
4. Identify the error in this pipeline command:
Get-Service | Where-Object Status -eq 'Running' | Select Name
medium
A. Select should be Select-Object, not Select.
B. Get-Service cannot be piped to Where-Object.
C. The comparison operator should be inside the script block {} in Where-Object.
D. The pipeline operator is missing.

Solution

  1. Step 1: Check Where-Object syntax

    The condition must be inside a script block: { $_.Status -eq 'Running' }. The given command misses the braces.
  2. Step 2: Verify other parts

    Select is an alias for Select-Object, so it's valid. Get-Service can be piped. Pipeline operator is present.
  3. Final Answer:

    The comparison operator should be inside the script block {} in Where-Object. -> Option C
  4. Quick Check:

    Where-Object needs script block for conditions [OK]
Hint: Put conditions inside {} for Where-Object [OK]
Common Mistakes:
  • Omitting braces {} in Where-Object
  • Thinking Select is invalid
  • Assuming pipeline operator is missing
5. You want to get the top 3 services sorted by their status alphabetically, but only those that are running. Which pipeline command achieves this?
hard
A. Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object Status | Select-Object -First 3
B. Get-Service | Sort-Object Status | Select-Object -First 3 | Where-Object { $_.Status -eq 'Running' }
C. Get-Service | Select-Object -First 3 | Where-Object { $_.Status -eq 'Running' } | Sort-Object Status
D. Get-Service | Where-Object Status -eq 'Running' | Select-Object -First 3 | Sort-Object Status

Solution

  1. Step 1: Filter running services first

    Use Where-Object { $_.Status -eq 'Running' } to keep only running services.
  2. Step 2: Sort filtered services by Status

    Then sort them alphabetically with Sort-Object Status.
  3. Step 3: Select the first 3 services

    Finally, pick the top 3 with Select-Object -First 3.
  4. Final Answer:

    Get-Service | Where-Object { $_.Status -eq 'Running' } | Sort-Object Status | Select-Object -First 3 -> Option A
  5. Quick Check:

    Filter, then sort, then select top 3 [OK]
Hint: Filter first, then sort, then select top items [OK]
Common Mistakes:
  • Sorting before filtering changes results
  • Selecting before filtering loses data
  • Missing braces in Where-Object
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