[英]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.