📖 Scenario: You work in an office where you need to send a thank you message to a list of clients after a meeting.
🎯 Goal: You will create a list of client names, then use a ForEach loop to prepare a thank you message for each client.
📋 What You'll Learn
Create a list of client names in a variable called clients
Create a variable called message with the text 'Thank you for attending the meeting!'
Use a ForEach loop with the variable client to go through each name in clients
Inside the loop, create a personalized message combining client and message
Print each personalized message
💡 Why This Matters
🌍 Real World
Sending personalized messages or emails to a list of contacts is common in offices and customer service.
💼 Career
Knowing how to automate repetitive tasks like messaging clients saves time and reduces errors in many jobs.
Progress0 / 4 steps
1
Create the list of clients
Create a variable called clients and assign it a list with these exact names: 'Alice', 'Bob', 'Charlie'.
PowerShell
Hint
Use @(...) to create a list (array) in PowerShell.
2
Add the message variable
Create a variable called message and set it to the string 'Thank you for attending the meeting!'.
PowerShell
Hint
Use = to assign a string to a variable in PowerShell.
3
Use a ForEach loop to create personalized messages
Use a ForEach loop with the variable client to go through each name in $clients. Inside the loop, create a variable called personalMessage that combines client and message using string interpolation.
PowerShell
Hint
Use foreach ($client in $clients) { ... } and inside use "$client, $message" for string interpolation.
4
Print each personalized message
Inside the ForEach loop, add a line to print the personalMessage variable using Write-Output.
PowerShell
Hint
Use Write-Output $personalMessage to print the message inside the loop.
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
Step 1: Understand the foreach loop purpose
The foreach loop is designed to repeat actions for every item in a list or collection.
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.
Final Answer:
Repeats a block of code for each item in a collection -> Option C
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 }
Only foreach ($item in $list) { Write-Output $item } uses the correct 'in' keyword and parentheses.
Final Answer:
foreach ($item in $list) { Write-Output $item } -> Option A
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
Step 1: Understand the loop range
The loop runs for numbers 1, 2, and 3.
Step 2: Calculate output for each iteration
Each number is multiplied by 2, so outputs are 2, 4, and 6.
Final Answer:
2 4 6 -> Option A
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
Step 1: Check foreach syntax
PowerShell requires parentheses around the variable and collection in foreach loops.
Step 2: Identify missing parentheses
The code lacks parentheses: it should be foreach ($item in $array) { ... }
Final Answer:
Missing parentheses around the loop variable and collection -> Option B
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
Step 1: Understand filtering condition
To check if a filename ends with '.txt', use the '-like' operator with '*.txt' pattern.
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.
Final Answer:
foreach ($file in $files) { if ($file -like '*.txt') { Write-Output $file } } -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.