我有一个PowerShell脚本要在jenkins中作为构建步骤执行,并且需要将环境变量传递给它
powershell -File .\Build.ps1 -Version $env:APP_VERSION_NUMBER
APP_VERSION_NUMBER
是由Jenkins的版本号插件设置的环境变量。
由于某些原因,从未设置-Version
参数,并且在控制台日志输出中仅看到$env:APP_VERSION_NUMBER
。
这是语法问题吗?
答案 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)