from https://blog.csdn.net/thinktik/article/details/81165858
输入字符串表达式时,可以使用单引号(”)或双引号(“”)括住字符串,但PowerShell解析单引号和双引号中字符串的方式是不同的。更多请看(www.omob.cc)
一、单引号括住的字符串,字符串被精确地传递到命令,字符串中包含的任何表达式都不会被计算,只会被解释成文本。例如:
$varA=200
Write-host 'The value of $varA is $varA.'
1
2
3
输出为:
The value of $varA is $varA.
1
变量$varA不会被相应的值替换。
二、双引号括住的字符串,在字符串传递到命令执行前,变量名会被变量值替代,表达式也会被计算。例如:
例1:
$varA=200
Write-host "The value of $varA is $varA."
1
2
3
输出为:
The value of 200 is 200.
1
变量$varA相应的值200替换。
例2:
"The value of $(100+100) is 200"
1
输出为:
The value of 200 is 200.
1
表达式$(100+100)被计算,并且结果被插入字符串中。
要避免双引号中的字符串被变量值/表达式值替换,需要在变量名/表达式前使用反单引号()。例如:
$varA=200
Write-host "The value of `$varA is $varA."
1
2
3
输出为:
The value of $varA is 200.
1
三、如果字符串使用单引号括起来,同时被括起的字符串中包含单引号,则需使用两个单引号,例如:
'He doesn''t want to go home.'
1
如果字符串使用双引号括起来,同时被括起的字符串中包含双引号,则需使用两个双引号,例如:
"He said, ""How are you?"""
1
当然,也可以使用反单引号(`)字符来强制PowerShell将单引号或双引号解释为文本,例如:
"He doesn`'t want to go home."
"He said, `"How are you?`""