我有一个带有脚本的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/

10-14 17:20
查看更多