PowerShell

Strings

Syntax#

  • “(Double-quoted) String”

  • ‘Literal string’

  • @“\

Here-string
“@

  • @‘\

Literal here-string
‘@

Remarks#

Strings are objects representing text.

Creating a basic string

String

Strings are created by wrapping the text with double quotes. Double-quoted strings can evalute variables and special characters.

$myString = "Some basic text"
$mySecondString = "String with a $variable"

To use a double quote inside a string it needs to be escaped using the escape character, backtick (`). Single quotes can be used inside a double-quoted string.

$myString = "A `"double quoted`" string which also has 'single quotes'."

Literal string

Literal strings are strings that doesn’t evaluate variables and special characters. It’s created using single quotes.

$myLiteralString = 'Simple text including special characters (`n) and a $variable-reference'

To use single quotes inside a literal string, use double single quotes or a literal here-string. Double qutoes can be used safely inside a literal string

$myLiteralString = 'Simple string with ''single quotes'' and "double quotes".'

Format string

$hash = @{ city = 'Berlin' }

$result = 'You should really visit {0}' -f $hash.city
Write-Host $result #prints "You should really visit Berlin"

Format strings can be used with the -f operator or the static [String]::Format(string format, args) .NET method.

Multiline string

There are multiple ways to create a multiline string in PowerShell:

  • You can use the special characters for carriage return and/or newline manually or use the NewLine-environment variable to insert the systems “newline” value)

    "Hello`r`nWorld"
    "Hello{0}World" -f [environment]::NewLine
  • Create a linebreak while defining a string (before closing quote)

    "Hello
    World"
  • Using a here-string. This is the most common technique.

    @"
    Hello
    World
    "@

Here-string

Here-strings are very useful when creating multiline strings. One of the biggest benefits compared to other multiline strings are that you can use quotes without having to escape them using a backtick.

Here-string

Here-strings begin with @" and a linebreak and end with "@ on it’s own line ("@must be first characters on the line, not even whitespace/tab).

@"
Simple
    Multiline string 
with "quotes"
"@

Literal here-string

You could also create a literal here-string by using single quotes, when you don’t want any expressions to be expanded just like a normal literal string.

@'
The following line won't be expanded
$(Get-Date)
because this is a literal here-string
'@

Concatenating strings

Using variables in a string

You can concatenate strings using variables inside a double-quoted string. This does not work with properties.

$string1 = "Power"
$string2 = "Shell"
"Greetings from $string1$string2"

Using the + operator

You can also join strings using the + operator.

$string1 = "Greetings from"
$string2 = "PowerShell"
$string1 + " " + $string2

This also works with properties of objects.

"The title of this console is '" + $host.Name + "'"

Using subexpressions

The output/result of a subexpressions $() can be used in a string. This is useful when accessing propeties of an object or performing a complex expression. Subexpressions can contain multiple statements separated by semicolon ;

"Tomorrow is $((Get-Date).AddDays(1).DayOfWeek)"

Special characters

When used inside a double-quoted string, the escape character (backtick `) reperesents a special character.

`0    #Null
`a    #Alert/Beep
`b    #Backspace
`f    #Form feed (used for printer output)
`n    #New line
`r    #Carriage return
`t    #Horizontal tab
`v    #Vertical tab (used for printer output)

Example:

> "This`tuses`ttab`r`nThis is on a second line"
This    uses    tab
This is on a second line

You can also escape special characters with special meanings:

`#    #Comment-operator
`$    #Variable operator
``    #Escape character
`'    #Single quote
`"    #Double quote

This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow