Bird
Raised Fist0
PowerShellscripting~10 mins

ForEach loop 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 loop through each item in the array and print it.

PowerShell
foreach ($item [1] $array) { Write-Output $item }
Drag options to blanks, or click blank then click option'
Aof
Bon
Cin
Dat
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'of' or 'on' instead of 'in' causes syntax errors.
Leaving out the keyword entirely.
2fill in blank
medium

Complete the code to loop through numbers 1 to 5 and print each number.

PowerShell
foreach ($num [1] 1..5) { Write-Output $num }
Drag options to blanks, or click blank then click option'
Ain
Bfrom
Con
Dof
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'from' or 'of' instead of 'in' causes errors.
Trying to use a comma-separated list without the range operator.
3fill in blank
hard

Fix the error in the loop to correctly print each name in the list.

PowerShell
$names = @('Anna', 'Bob', 'Cara')
foreach ($name [1] $names) { Write-Output $name }
Drag options to blanks, or click blank then click option'
Ain
Bon
Cat
Dof
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'on' or 'of' causes the loop to fail.
Forgetting the keyword entirely.
4fill in blank
hard

Fill both blanks to create a loop that prints only even numbers from 1 to 10.

PowerShell
foreach ($num [1] 1..10) { if ($num [2] 2 -eq 0) { Write-Output $num } }
Drag options to blanks, or click blank then click option'
Ain
B%
C==
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using '==' instead of '%' for checking even numbers.
Using 'on' instead of 'in' for the loop.
5fill in blank
hard

Fill all three blanks to create a dictionary of word lengths for words longer than 3 characters.

PowerShell
$words = @('cat', 'house', 'tree', 'a', 'dog')
$lengths = @{}
foreach ($word [1] $words) { if ($word.Length [2] 3) { $lengths[[3]] = $word.Length } }
$lengths
Drag options to blanks, or click blank then click option'
Ain
B>
C$word
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' for length comparison.
Using the wrong key for the dictionary.

Practice

(1/5)
1. What does the foreach loop do in PowerShell?
easy
A. Creates a new collection from scratch
B. Runs code only once regardless of the collection
C. Repeats a block of code for each item in a collection
D. Stops the script immediately

Solution

  1. Step 1: Understand the foreach loop purpose

    The foreach loop is designed to repeat actions for every item in a list or collection.
  2. Step 2: Compare options to this purpose

    Only Repeats a block of code for each item in a collection correctly describes repeating code for each item in a collection.
  3. Final Answer:

    Repeats a block of code for each item in a collection -> Option C
  4. Quick Check:

    foreach = repeat for each item [OK]
Hint: Think: foreach means 'for each item' repeat [OK]
Common Mistakes:
  • Confusing foreach with a one-time action
  • Thinking foreach creates new collections
  • Believing foreach stops the script
2. Which of the following is the correct syntax for a foreach loop in PowerShell?
easy
A. foreach ($item in $list) { Write-Output $item }
B. foreach $item in $list { Write-Output $item }
C. foreach ($item : $list) { Write-Output $item }
D. foreach ($item; $list) { Write-Output $item }

Solution

  1. Step 1: Recall correct foreach syntax

    PowerShell foreach loops use: foreach ($var in $collection) { ... }
  2. Step 2: Match options to syntax

    Only foreach ($item in $list) { Write-Output $item } uses the correct 'in' keyword and parentheses.
  3. Final Answer:

    foreach ($item in $list) { Write-Output $item } -> Option A
  4. Quick Check:

    Syntax uses 'in' keyword inside parentheses [OK]
Hint: Look for 'foreach ($var in $collection)' pattern [OK]
Common Mistakes:
  • Omitting parentheses around variable and collection
  • Using ':' or ';' instead of 'in'
  • Missing the 'in' keyword
3. What will be the output of this PowerShell script?
foreach ($num in 1..3) { Write-Output ($num * 2) }
medium
A. 2 4 6
B. 1 2 3
C. 3 6 9
D. Error: Invalid syntax

Solution

  1. Step 1: Understand the loop range

    The loop runs for numbers 1, 2, and 3.
  2. Step 2: Calculate output for each iteration

    Each number is multiplied by 2, so outputs are 2, 4, and 6.
  3. Final Answer:

    2 4 6 -> Option A
  4. Quick Check:

    1*2=2, 2*2=4, 3*2=6 [OK]
Hint: Multiply each loop number by 2 mentally [OK]
Common Mistakes:
  • Confusing the range operator '..'
  • Thinking output is original numbers
  • Expecting syntax error
4. Identify the error in this PowerShell foreach loop:
foreach $item in $array { Write-Output $item }
medium
A. No error, code is correct
B. Missing parentheses around the loop variable and collection
C. Using $item instead of $i as loop variable
D. Incorrect use of Write-Output

Solution

  1. Step 1: Check foreach syntax

    PowerShell requires parentheses around the variable and collection in foreach loops.
  2. Step 2: Identify missing parentheses

    The code lacks parentheses: it should be foreach ($item in $array) { ... }
  3. Final Answer:

    Missing parentheses around the loop variable and collection -> Option B
  4. Quick Check:

    foreach needs parentheses [OK]
Hint: Always use parentheses in foreach syntax [OK]
Common Mistakes:
  • Omitting parentheses
  • Confusing variable names
  • Thinking Write-Output causes error
5. You have a list of filenames stored in $files. You want to print only those filenames that end with '.txt' using a foreach loop. Which script correctly does this?
hard
A. foreach ($file in $files) { if ($file -eq '*.txt') { Write-Output $file } }
B. foreach ($file in $files) { if ($file contains '.txt') { Write-Output $file } }
C. foreach ($file in $files) { Write-Output $file -match '.txt' }
D. foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } }

Solution

  1. Step 1: Understand filtering condition

    To check if a filename ends with '.txt', use the '-like' operator with '*.txt' pattern.
  2. Step 2: Verify foreach loop and condition

    foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } } correctly uses foreach with an if condition checking '-like "*.txt"' and outputs matching files.
  3. Final Answer:

    foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } } -> Option D
  4. Quick Check:

    Use '-like' with wildcard for pattern match [OK]
Hint: Use '-like "*.txt"' inside if in foreach [OK]
Common Mistakes:
  • Using '-eq' instead of '-like' for pattern matching
  • Misusing '-match' without if condition
  • Using 'contains' which is invalid here
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