Jenkins Windows批处理命令Powershell环境变量

时间:2018-09-05 15:54:03

标签: powershell jenkins

我有一个PowerShell脚本要在jenkins中作为构建步骤执行,并且需要将环境变量传递给它

powershell -File .\Build.ps1 -Version $env:APP_VERSION_NUMBER

APP_VERSION_NUMBER是由Jenkins的版本号插件设置的环境变量。

由于某些原因,从未设置-Version参数,并且在控制台日志输出中仅看到$env:APP_VERSION_NUMBER

这是语法问题吗?

2 个答案:

答案 0 :(得分:0)

使用PowerShell CLI的 -File参数时,传递给脚本的参数被视为 literals ,因此,鉴于您正在从PowerShell中调用命令行 ,因此$env:APP_VERSION_NUMBER不会扩展

要强制 target PowerShell过程评估参数,必须使用-Command 而不是-File

powershell -Command .\Build.ps1 -Version $env:APP_VERSION_NUMBER

但是,现在我们知道您正在通过cmd.exe (批处理文件)来调用命令行 Jenkins(类型为Execute Windows batch command的构建步骤),更简单的答案确实是cmd.exe使用其%<envVarName>%语法扩展环境变量引用: / p>

powershell -File .\Build.ps1 -Version "%APP_VERSION_NUMBER%"

注意:严格不需要将"..."中的环境变量引用包含在版本号中,但是这是形成的好习惯,因此可以传递带有嵌入式空格或其他shell元字符的值也是正确的。

答案 1 :(得分:0)

事实证明确实是语法问题。该修复程序如下所示

powershell -File ".\Build.ps1" -Version %APP_VERSION_NUMBER%

enter image description here