【问题标题】:Jenkins Windows Batch Command Powershell Environment VariablesJenkins Windows 批处理命令 Powershell 环境变量
【发布时间】:2018-09-05 15:54:02
【问题描述】:

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

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

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

由于某种原因,从未设置过-Version 参数,我在控制台日志输出中只看到$env:APP_VERSION_NUMBER

这是语法问题吗?

【问题讨论】:

  • 变量 APP_VERSION_NUMBER 是否设置在机器或用户上下文中?如果您打开一个新的 powershell 提示符并输入 ${env:APP_VERSION_NUMBER},它给出的值是否正确?

标签: powershell jenkins


【解决方案1】:

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

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

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

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

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

注意:在"..." 中包含环境变量引用对于版本号并不是绝对必要的,但是形成一个好习惯,这样带有嵌入空格或其他shell 元字符的值也可以正确传递.

【讨论】:

    【解决方案2】:

    事实证明它确实是一个语法问题。修复如下所示

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

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多