通过 TeamCity 将带引号的参数传递给 PowerShell 脚本

Pass argument with quotes to PowerShell script via TeamCity

我们正在通过 TeamCity 调用 PowerShell 脚本。我们想传递一个包含引号的参数,例如:

Build step       : PowerShell
Script file      : foo/bar/my.ps1
Script arguments : -MyParam "%system.MyParam%"

其中 system.MyParam 设置为 <xml><elem attr="value"></elem></xml>。不幸的是,这失败了:

Cannot process argument transformation on parameter MyParam. Cannot convert value "<xml><elem" to type "System.Xml.XmlDocument". Error: "Unexpected end of file while parsing Name has occurred. Line 1, ..."

有人知道如何正确传递双引号吗?

到目前为止我尝试过但没有奏效的方法:

反引号 (`) 是 PSH 转义字符。所以你可以使用 "`"" 来传递一个包含双引号字符的字符串。

您还可以在 PSH 字符串周围使用单引号,同时避免表达式插值:'"' 也是一个带有单双引号的字符串。

但请记住,您需要确保引用对启动器(发送参数)和脚本本身都有效:您可能还需要对转义符进行转义。

由于您的问题是输入 XML 字符串包含双引号属性值,可能的 解决方法 可以使用 single-quoted attribute values.