通过 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, ..."
有人知道如何正确传递双引号吗?
到目前为止我尝试过但没有奏效的方法:
- 简单传递参数
- 使用双引号(即 attr=""value"")
- 使用 PowerShell 的反引号转义机制(即 attr=`"value`")
- 在整个参数周围使用单引号(仅当值不包含空格时有效)
反引号 (`
) 是 PSH 转义字符。所以你可以使用 "`""
来传递一个包含双引号字符的字符串。
您还可以在 PSH 字符串周围使用单引号,同时避免表达式插值:'"'
也是一个带有单双引号的字符串。
但请记住,您需要确保引用对启动器(发送参数)和脚本本身都有效:您可能还需要对转义符进行转义。
由于您的问题是输入 XML 字符串包含双引号属性值,可能的 解决方法 可以使用 single-quoted attribute values.
我们正在通过 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, ..."
有人知道如何正确传递双引号吗?
到目前为止我尝试过但没有奏效的方法:
- 简单传递参数
- 使用双引号(即 attr=""value"")
- 使用 PowerShell 的反引号转义机制(即 attr=`"value`")
- 在整个参数周围使用单引号(仅当值不包含空格时有效)
反引号 (`
) 是 PSH 转义字符。所以你可以使用 "`""
来传递一个包含双引号字符的字符串。
您还可以在 PSH 字符串周围使用单引号,同时避免表达式插值:'"'
也是一个带有单双引号的字符串。
但请记住,您需要确保引用对启动器(发送参数)和脚本本身都有效:您可能还需要对转义符进行转义。
由于您的问题是输入 XML 字符串包含双引号属性值,可能的 解决方法 可以使用 single-quoted attribute values.