繁体   English   中英

通过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> 不幸的是,这失败了:

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

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

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

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

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

Backtick( ` )是PSH转义字符。 因此,您可以使用"`""来传递包含双引号字符的字符串。

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

但请记住,您需要确保引用适用于启动程序(发送参数)和脚本本身:您可能还需要转义转义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM