我有一个带有脚本的PowerShell脚本,我想从TeamCity构建步骤中调用该参数。
我希望根据TeamCity构建参数(配置参数)设置开关的值(真/假)。
因此,如下所示:
在PowerShell运行程序构建步骤中:
但是以上方法不起作用。
我得到这个错误
[14:27:01][Step 1/1] Cannot process argument transformation on parameter 'preRelease'. Cannot
[14:27:01][Step 1/1] convert value "System.String" to type
[14:27:01][Step 1/1] "System.Management.Automation.SwitchParameter". Boolean parameters accept only
[14:27:01][Step 1/1] Boolean values and numbers, such as $True, $False, 1 or 0.
如您所见,PowerShell似乎坚持将参数解释为字符串。
我已经尝试了许多编写脚本参数的变体。这些都不起作用:
-preRelease:%IncludePreRelease%
-preRelease:([boolean]%IncludePreRelease%)
-preRelease:([System.Convert]::ToBoolean(%IncludePreRelease%))
最佳答案
这是一个古老的问题,但是如果您仍在寻找答案,那么我设法使其成功。
主要技巧是您实际上不应该像在PowerShell中那样在参数名称和值之间使用冒号(我知道,令人困惑……)。
看起来TeamCity正在以不同的方式调用脚本并将参数作为字符串传递。
因此,以您的示例为例,以下方法应该起作用:
-preRelease $%IncludePreRelease%
请注意,我在TeamCity变量前面添加了一个美元符号,以将“true”更改为“$ true”
请让我知道这对你有没有用
谢谢!
关于powershell - 如何从TeamCity构建配置中设置PowerShell开关参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26340157/