Powershell 将变量存储到变量中不起作用

Powershell Store Variables into Variable does not work

我需要 Powershell 方面的帮助,希望有人能提供帮助。

我想将多个变量存储到一个变量中。

这是我的代码:

$Content = @"
$Var1 = "1"
$Var2 = "2"
$Var3 = "3"
"@   

echo $Content

这就是我的输出:

echo $Content
 = "1"
 = "2"
 = "3"

它应该是这样的:

$Var1 = "1", etc...

但是每个变量都被删除了。我不知道为什么。有人可以解释一下吗?我需要将它们存储到类似对象的东西中吗?

提前致谢!

针对您的情况的最快解决方法是切换到单引号此处字符串。

$Content = @'
$Var1 = "1"
$Var2 = "2"
$Var3 = "3"
'@ 

通常,字符串两边的双引号指示 PowerShell 进行插值。字符串周围的单引号告诉 PowerShell 将内容视为文字字符串。这也适用于此处的字符串(@""@@''@)。

# Double Quotes

$string = "my string"
"$string"
my string

@"
$string
"@
my string

# Single Quotes

'$string'
$string

@'
$string
'@
$string

发生插值时,会扩展和评估变量。变量以 $ 字符开始标识,直到读取到变量名称的非法字符。请注意在下面的示例中,变量插值如何在 . 处停止。

"$string.length"
my string.length

您可以使用转义字符或其他运算符来控制双引号字符串内的插值。子表达式运算符 $() 允许在将表达式转换为字符串之前对其求值。

"$($string.length)"
9

反引号字符是 PowerShell 转义字符。当你不想把它当作一个变量时,它可以用来转义$

"`$string"
$string

混合引号会造成某些问题。 如果您用单引号将字符串括起来, 里面的所有内容都将是文字字符串 无论使用转义字符还是子表达式。

'"$($string.length)"'
"$($string.length)"

'"`$string"'
"`$string"

用双引号和内部单引号将字符串括起来只会按字面意义对待内部单引号,因为外部引号决定了字符串的解释方式。

"'$string'"
'my string'

使用多个单引号对或双引号对需要特殊处理。在这种双引号的独特情况下,您可以使用反引号转义符或两个 " 来打印单个 ".

"""$string"""
"my string"

"`"$string`""
"my string"

对于多个单引号,您必须使用两个 ',因为反引号将按字面意思处理,不会告诉 PowerShell 转义任何内容。

'''$string'''
'$string'

官方文档请参考About_Quoting_Rules