Simple questions that's been bugging me: In powershell, I can define strings like so:
$s1 = "Boogety boo"
or
$s2 = '.net rocks'
Is there a difference to the interpreter?
A single-quoted string does not have variables within it interpreted. A double-quoted string does. Also, a double-quoted string can contain apostrophes without backslashes, while a single-quoted string can contain unescaped quotation marks.
Double-quoted stringsA string enclosed in double quotation marks is an expandable string. Variable names preceded by a dollar sign ( $ ) are replaced with the variable's value before the string is passed to the command for processing. For example: PowerShell Copy. $i = 5 "The value of $i is $i."
This means that if you hard code a Distinguished Name in PowerShell, and the string is enclosed in double quotes, any embedded double quotes must be escaped first by a backtick "`", and then by a backslash "\".
To include the double quotes inside of the string, you have two options. You can either enclose your string in single quotes or escape the double quotes with a symbol called a backtick. You can see an example of both below of using PowerShell to escape double quotes. Notice that "string" now includes the double quotes.
Double quotes allow variable expansion while single quotes do not:
PS C:\Users\Administrator> $mycolor="red" PS C:\Users\Administrator> write-output -inputobject 'My favorite color is $mycolor' My favorite color is $mycolor
Source: http://www.techotopia.com/index.php/Windows_PowerShell_1.0_String_Quoting_and_Escape_Sequences
(I know version 1.0 but the principle is still the same)
This is not trying to be a better answer. Just another way to say it.
The variable expansion between apostrophes and quotes are the same as on UNIX shells (sh, ksh, bash). Using apostrophes will take the character string as-is, without processing any escapes.
PS C:\Users\lit> $x = "`t" PS C:\Users\lit> $x PS C:\Users\lit> Write-Output "now${x}is" now is PS C:\Users\lit> $x = '`t' PS C:\Users\lit> $x `t PS C:\Users\lit> Write-Output "now${x}is" now`tis PS C:\Users\lit> $word = "easy" PS C:\Users\lit> "PowerShell is $word" PowerShell is easy PS C:\Users\lit> 'PowerShell is $word' PowerShell is $word
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With