![](/img/trans.png)
[英]Jenkins Inject Environment variable works with batch command but not powershell
[英]Jenkins Windows Batch Command Powershell Environment Variables
我有一个PowerShell脚本要在jenkins中作为构建步骤执行,并且需要将环境变量传递给它
powershell -File .\Build.ps1 -Version $env:APP_VERSION_NUMBER
APP_VERSION_NUMBER
是由Jenkins的版本号插件设置的环境变量。
由于某些原因,从未设置-Version
参数,并且在控制台日志输出中仅看到$env:APP_VERSION_NUMBER
。
这是语法问题吗?
当您使用PowerShell CLI的-File
参数时 , 传递给脚本的参数被视为文字 ,因此,假设您不是从PowerShell调用命令行,则不会扩展$env:APP_VERSION_NUMBER
。
要强制目标 PowerShell进程,以评估的参数,你必须使用-Command
而非-File
:
powershell -Command .\Build.ps1 -Version $env:APP_VERSION_NUMBER
但是, 既然我们知道您正在通过 Jenkins(类型为Execute Windows batch command
的构建步骤) 通过cmd.exe
(批处理文件) 调用命令行, cmd.exe
简单的答案的确是让cmd.exe
扩展环境-variable引用,使用其%<envVarName>%
语法 :
powershell -File .\Build.ps1 -Version "%APP_VERSION_NUMBER%"
注意:不一定要在版本号中加上环境变量引用"..."
,但要养成良好的习惯,以便带有嵌入空格或其他外壳元字符的值也能正确传递。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.