无法从Powershell脚本访问构建变量

时间:2019-06-15 12:22:28

标签: powershell azure-devops azure-pipelines-build-task

我正在尝试在脚本中使用Build variables。根据{{​​3}},我应该可以使用以下内容:

Write-Host "BUILD_DATE: $Env:BUILD_DATE"
Write-Host "BUILD_REV: $Env:BUILD_REV"

但是,我只得到以下输出

BUILD_DATE:
BUILD_REV:

我也尝试过这种语法:

Write-Host "BUILD_DATE: $(Env:BUILD_DATE)"
Write-Host "BUILD_REV: $(Env:BUILD_REV)"

Write-Host "BUILD_DATE: $(Build.Date)"
Write-Host "BUILD_REV: $(Build.Rev)"

但是第一段给出The term 'Env:BUILD_DATE' is not recognized,第二段给出The term 'Build.Date' is not recognized

如何在脚本中使用构建变量?

1 个答案:

答案 0 :(得分:1)

免责声明:我对Azure管道几乎一无所知,因此我的答案基于阅读文档。如果我弄错了,请告诉我们。

您的第一个命令使用正确的语法 来引用PowerShell中的环境变量(也在可扩展(双引号)字符串中)。
(其他基于子表达式运算符$(...)的命令错误地尝试执行名为Env:BUILD_DAT命令 ...,而不是引用变量。)

您的问题似乎是目标环境变量不存在

list of predefined variables that are exposed as environment variables不会 包含名为Build.Date / $env:BUILD_DATEBuild.Rev / $env:BUILD_REV的变量。

相比之下,名为DateRev的变量似乎确实存在-如您所述,它们在Build.BuildNumber / $Env:BUILD_BUILDNUMBER build变量,$(Date:yyyyMMdd)$(Rev:.r)-但似乎属于不同种类,没有公开为env。 。(不同于Build.BuildNumber / $Env:BUILD_BUILDNUMBER本身,公开了)。

(我不知道这些变量在哪里定义或如何分类以及在何处进行记录-请告诉我们您是否知道。)

一种快速的解决方法是将$Env:BUILD_BUILDNUMBER的值拆分为其组成部分:

# Split the build number into date and revision, by "."
$date, $rev = $Env:BUILD_BUILDNUMBER -split '\.'

"BUILD_DATE: $date"
"BUILD_REV: $rev"