A here-string starts with @" or @' and ends with "@ or '@ to hold multiple lines as one string.
Execution Sample
PowerShell
$text = @"
Line 1
Line 2
Line 3
"@
Write-Output $text
This code stores three lines in a variable using a here-string and then prints it.
Execution Table
Step
Action
Value of $text
Output
1
Start here-string with @" delimiter
""
2
Add line: Line 1
"Line 1\n"
3
Add line: Line 2
"Line 1\nLine 2\n"
4
Add line: Line 3
"Line 1\nLine 2\nLine 3\n"
5
End here-string with "@ delimiter
"Line 1\nLine 2\nLine 3\n"
6
Write-Output $text
"Line 1\nLine 2\nLine 3\n"
Line 1
Line 2
Line 3
💡 Here-string ends at "@ delimiter; output shows multiline string.
Variable Tracker
Variable
Start
After Step 2
After Step 3
After Step 4
After Step 5
Final
$text
null
"Line 1\n"
"Line 1\nLine 2\n"
"Line 1\nLine 2\nLine 3\n"
"Line 1\nLine 2\nLine 3\n"
"Line 1\nLine 2\nLine 3\n"
Key Moments - 3 Insights
Why do we use @" and "@ instead of quotes for multiline strings?
Because normal quotes can't hold multiple lines easily; here-strings let you write many lines without special characters, as shown in execution_table steps 1 and 5.
Does the here-string keep the line breaks inside the string?
Yes, each line break is preserved inside the string, so output shows multiple lines (see execution_table step 6 output).
Can we use single quotes instead of double quotes for here-strings?
Yes, single-quoted here-strings (@' '@) treat content literally without variable expansion, but double-quoted (@" "@) allow variables inside. This example uses double quotes.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4. What is the value of $text?
A"Line 1\nLine 2\n"
B"Line 1\n"
C"Line 1\nLine 2\nLine 3\n"
D""
💡 Hint
Check the 'Value of $text' column at step 4 in execution_table.
At which step does the here-string end?
AStep 3
BStep 5
CStep 6
DStep 2
💡 Hint
Look for the action 'End here-string with "@ delimiter' in execution_table.
If we replaced @" and "@ with single quotes @' and '@, what would change?
AVariable expansion inside the string would not happen
BThe string would not keep line breaks
CThe here-string would be invalid
DThe output would be on one line
💡 Hint
Recall key_moments about difference between single and double quoted here-strings.
Concept Snapshot
Here-strings hold multiline text in PowerShell.
Start with @" and end with "@ for double-quoted strings.
Preserves line breaks and supports variables.
Use @' and '@ for literal strings without variable expansion.
Assign to variables or output directly.
Full Transcript
This visual shows how PowerShell here-strings work. We start a here-string with @" and write multiple lines. Each line adds to the variable $text. We end the here-string with "@. The variable keeps all lines with line breaks. When we output $text, it prints all lines exactly as typed. Here-strings are useful for storing or printing multiline text easily. Single-quoted here-strings (@' '@) keep text literal without expanding variables. Double-quoted here-strings (@" "@) allow variables inside. This example uses double quotes. The execution table tracks each step of building the string and the final output.
Practice
(1/5)
1. What is the main purpose of using a here-string in PowerShell?
easy
A. To execute multiple commands in one line
B. To create multiline strings preserving formatting and line breaks
C. To define a function with multiple parameters
D. To comment out multiple lines of code
Solution
Step 1: Understand what a here-string is
A here-string is a way to write text that spans multiple lines without losing formatting or line breaks.
Step 2: Compare options with the definition
Only To create multiline strings preserving formatting and line breaks correctly describes the purpose of here-strings in PowerShell.
Final Answer:
To create multiline strings preserving formatting and line breaks -> Option B
Quick Check:
Here-strings = multiline text [OK]
Hint: Here-strings keep text exactly as typed across lines [OK]
Common Mistakes:
Confusing here-strings with command execution
Thinking here-strings are for comments
Assuming here-strings define functions
2. Which of the following is the correct syntax to start a double-quoted here-string in PowerShell?
easy
A. @' (at sign followed by single quote)
B. "@ (double quote followed by at sign)
C. @ (at sign followed by double quote)
D. @" (at sign followed by double quote)
Solution
Step 1: Recall here-string syntax
Double-quoted here-strings start with @" and end with "@.
Step 2: Match options with syntax
@" (at sign followed by double quote) correctly shows @" as the start of a double-quoted here-string.
Final Answer:
@" -> Option D
Quick Check:
Double-quoted here-string start = @" [OK]
Hint: Double-quoted here-strings start with @" [OK]
Common Mistakes:
Using single quote instead of double quote for double-quoted here-string
Reversing the order of @ and "
Confusing start and end delimiters
3. What will be the output of this PowerShell code?
5. You want to create a multiline string in PowerShell that includes the literal text "$path" without expanding it, but also includes a variable $user expanded. Which here-string syntax should you use?
hard
A. Use double-quoted here-string @" ... "@ and escape $path as `$path
B. Use single-quoted here-string @' ... '@ and write $user outside it
C. Use double-quoted here-string @" ... "@ and write $path as is
D. Use single-quoted here-string @' ... '@ and include $user inside it
Solution
Step 1: Understand variable expansion in here-strings
Double-quoted here-strings expand variables, single-quoted do not.
Step 2: Requirement analysis
You want $user expanded but $path literal. So use double-quoted here-string and escape $path as `$path to prevent expansion.
Final Answer:
Use double-quoted here-string @" ... "@ and escape $path as `$path -> Option A
Quick Check:
Escape variables to keep literal in double-quoted here-strings [OK]
Hint: Escape $ with backtick to keep literal in double-quoted here-strings [OK]
Common Mistakes:
Using single-quoted here-string disables all variable expansion
Not escaping $path causes unwanted expansion
Trying to expand variables inside single-quoted here-string
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.