4

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

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

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

无法处理参数的参数转换MyParam。无法将值“ <xml><elem”转换为类型“ System.Xml.XmlDocument”。错误:“解析名称时出现意外的文件结尾。第 1 行,...”

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

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

  • 只需传递参数
  • 使用双双引号(即 attr=""value"")
  • 使用PowerShell的反引号转义机制(即attr=`"value`")
  • 在整个参数周围使用单引号(仅当值不包含空格时才有效)
4

2 回答 2

2

由于您的问题是输入 XML 字符串包含双引号属性值,因此可能的解决方法是使用单引号属性值

于 2015-08-27T15:24:16.687 回答
1

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

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

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

于 2015-08-27T09:57:39.437 回答