【问题标题】:double quote issue in powershellpowershell中的双引号问题
【发布时间】:2022-10-17 05:27:14
【问题描述】:

我正在尝试将安装参数传递给 powershell 中的变量,但这样做会出错。

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

我尝试将其作为“&”符号运行,但它不起作用,我检查了许多网站但我无法解决它。任何帮助将不胜感激。

谢谢..

【问题讨论】:

  • 你把&放在哪里了?你能分享一个使用它的例子吗?
  • 在“$InstallLocation....”行之前添加

标签: powershell command-line-arguments


【解决方案1】:

= 右侧使用的语法仅在像这样直接调用命令时有效:

& "$InstallLocationpplication.exe" /install /quiet CID="BsDdfi3kj" Tag="CinarCorp"

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

当您实际上想将命令存储在变量中时,更改如下语法:

$InstallString = "`"$InstallLocationpplication.exe`" /install /quiet CID=`"BsDdfi3kj`" Tag=`"CinarCorp`""

我将整个字符串用双引号括起来,并通过在它们前面放置一个反引号来转义内部双引号。

您还可以使用 here-string 来避免转义内部双引号:

$InstallString = @"
"$InstallLocationpplication.exe" /install /quiet CID="BsDdfi3kj" Tag="CinarCorp"
"@

请注意,实际字符串以及最终的"@ 必须从行首开始。如果您缩进实际字符串,则空格/制表符包含在变量中,这通常是不需要的。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多