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

Can't access build variables from powershell script

我正在尝试使用 Build variables in a script. According to this documentation 我应该可以使用以下内容:

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

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

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

您的第一个命令使用正确的语法 在 PowerShell 中引用环境变量(也在可扩展 (double-quoted) 中字符串).
(其他基于子表达式运算符 $(...) 的命令错误地尝试执行名为 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 的默认格式定义构建变量$(Date:yyyyMMdd)$(Rev:.r) - 但似乎是 不同的类型,没有公开为 env。 vars.(不像 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"