Powershell中的双引号问题

double quote issue in powershell

我试图将安装参数传递给 powershell 中的一个变量,但我在这样做时遇到了错误。

$InstallString = "$InstallLocation\application.exe" /install / quiet CID="BsDdfi3kj" Tag="CinarCorp"

我试过运行把它放在“&”符号上,但是没有用,我查了很多网站都解决不了。任何帮助将不胜感激。

谢谢..

=右侧使用的语法仅在直接调用如下命令时有效:

& "$InstallLocation\application.exe" /install /quiet CID="BsDdfi3kj" Tag="CinarCorp"

请注意,您在 quiet 之前有一个虚假的 space 字符,我将其删除。

当你真的想把命令存储在一个变量中时,像这样改变语法:

$InstallString = "`"$InstallLocation\application.exe`" /install /quiet CID=`"BsDdfi3kj`" Tag=`"CinarCorp`""

我将整个字符串包含在 double-quotes 中,并通过在它们前面放置一个反引号来转义内部 double-quotes。

您也可以使用 here-string 来避免必须转义内部 double-quotes:

$InstallString = @"
"$InstallLocation\application.exe" /install /quiet CID="BsDdfi3kj" Tag="CinarCorp"
"@

请注意,实际字符串以及最后的 "@ 必须从行首开始。如果缩进实际的字符串,spaces/tabs 会包含在变量中,这通常是不需要的。

如果你坚持缩进,你当然可以 trim 字符串:

$InstallString = @"
    "$InstallLocation\application.exe" /install /quiet CID="BsDdfi3kj" Tag="CinarCorp"
"@.Trim()

我建议阅读 about Quoting Rules 了解更多详情。