Bird
Raised Fist0
PowerShellscripting~30 mins

Pipeline object flow in PowerShell - Mini Project: Build & Apply

Choose your learning style10 modes available
Pipeline Object Flow in PowerShell
📖 Scenario: You are working with PowerShell to process a list of files in a folder. You want to filter files by size and then display their names.
🎯 Goal: Build a PowerShell script that uses pipeline object flow to filter files larger than a certain size and then outputs their names.
📋 What You'll Learn
Create a list of files with their sizes
Set a size threshold variable
Use the pipeline to filter files larger than the threshold
Output the names of the filtered files
💡 Why This Matters
🌍 Real World
Filtering and processing files by size is common in system administration and automation tasks.
💼 Career
Understanding pipeline object flow is essential for writing efficient PowerShell scripts used in IT operations and automation.
Progress0 / 4 steps
1
Create a list of files with sizes
Create a variable called files that stores the output of Get-ChildItem for the current directory.
PowerShell
Hint

Use Get-ChildItem to get files and assign it to files.

2
Set a size threshold variable
Create a variable called sizeThreshold and set it to 10000 (bytes).
PowerShell
Hint

Set sizeThreshold to 10000 to filter files larger than 10 KB.

3
Filter files larger than the threshold using pipeline
Use the pipeline to filter files where the Length property is greater than sizeThreshold. Store the result in a variable called largeFiles.
PowerShell
Hint

Use Where-Object with $_ to filter files by size.

4
Output the names of the filtered files
Use the pipeline to output the Name property of each file in largeFiles.
PowerShell
Hint

Use ForEach-Object to output the Name of each file.

Practice

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

Solution

  1. Step 1: Understand the pipeline operator

    The pipeline operator | connects commands by passing output from one as input to the next.
  2. Step 2: Identify its role in command chaining

    This allows commands to work together smoothly without temporary files or variables.
  3. Final Answer:

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

    Pipeline operator = passes output to next command [OK]
Hint: Pipeline | passes output to next command [OK]
Common Mistakes:
  • Thinking | is a comment symbol
  • Confusing | with variable assignment
  • Assuming | stops script execution
2. Which of the following is the correct syntax to filter files larger than 1MB using the pipeline?
easy
A. Get-ChildItem | Where-Object { $_.Length -gt 1MB }
B. Get-ChildItem | Where-Object { $_.Length > "1MB" }
C. Get-ChildItem | Where-Object { Length -gt 1MB }
D. Get-ChildItem | Where-Object Length -gt "1MB"

Solution

  1. Step 1: Check the correct property and operator usage

    In PowerShell, filter with Get-ChildItem | Where-Object { $_.Length -gt 1MB }. 1MB is a valid byte literal (1048576 bytes). Use $_. for current object and -gt for greater than.
  2. Step 2: Why others are incorrect

    B uses > "1MB" (string comparison, incorrect filtering). C omits $_. (undefined Length). D simplified syntax with "1MB" (string compare).
  3. Final Answer:

    Get-ChildItem | Where-Object { $_.Length -gt 1MB } -> Option A
  4. Quick Check:

    $_.Length -gt 1MB (numeric) [OK]
Hint: Use $_.Property inside braces for filtering [OK]
Common Mistakes:
  • Omitting $_. before property name
  • Quoting size (\"1MB\") causing string comparison
  • Misplacing parameters outside script block
3. What is the output of this command?
Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object -Property Name
medium
A. Empty list because no process uses CPU
B. List of all processes with CPU property
C. Error because CPU is not a valid property
D. List of process names using more than 100 CPU seconds

Solution

  1. Step 1: Filter processes by CPU usage

    The command filters processes where the CPU time is greater than 100 seconds.
  2. Step 2: Select only the Name property

    After filtering, it selects and outputs only the process names.
  3. Final Answer:

    List of process names using more than 100 CPU seconds -> Option D
  4. Quick Check:

    Filtering then selecting property = filtered names [OK]
Hint: Filter first, then select properties to see desired output [OK]
Common Mistakes:
  • Assuming CPU is not a valid property
  • Expecting full process details instead of just names
  • Thinking the output is empty without checking actual CPU usage
4. Identify the error in this pipeline:
Get-Service | Where-Object { $_.Status = 'Running' }
medium
A. Where-Object cannot be used with Get-Service
B. Missing pipeline operator (|) between commands
C. Using single equals (=) instead of comparison operator (-eq)
D. Incorrect property name 'Status'

Solution

  1. Step 1: Check the comparison operator in Where-Object

    The script uses = which is an assignment, not a comparison. PowerShell requires -eq for equality checks.
  2. Step 2: Confirm pipeline and property usage

    The pipeline operator is present and Status is a valid property of service objects.
  3. Final Answer:

    Using single equals (=) instead of comparison operator (-eq) -> Option C
  4. Quick Check:

    Use -eq for comparisons, not = [OK]
Hint: Use -eq for equality, not = inside script blocks [OK]
Common Mistakes:
  • Confusing = with -eq in conditions
  • Removing pipeline operator accidentally
  • Assuming property names are incorrect without checking
5. You want to list all files in a folder and its subfolders, sorted by size descending, but only show the top 5 largest files. Which pipeline command achieves this?
hard
A. Get-ChildItem | Sort-Object Length -Descending | Select-Object -First 5
B. Get-ChildItem -Recurse | Sort-Object Length -Descending | Select-Object -First 5
C. Get-ChildItem -Recurse | Where-Object Length -gt 5 | Sort-Object Length
D. Get-ChildItem -Recurse | Select-Object -First 5 | Sort-Object Length -Descending

Solution

  1. Step 1: Include all files recursively

    Use -Recurse with Get-ChildItem to get files in all subfolders.
  2. Step 2: Sort files by size descending and select top 5

    Sort by Length descending, then select the first 5 files.
  3. Final Answer:

    Get-ChildItem -Recurse | Sort-Object Length -Descending | Select-Object -First 5 -> Option B
  4. Quick Check:

    Recurse + sort descending + select first 5 = correct pipeline [OK]
Hint: Recurse first, then sort descending, then select top items [OK]
Common Mistakes:
  • Forgetting -Recurse to include subfolders
  • Selecting top 5 before sorting
  • Using Where-Object incorrectly to filter by number
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