Отказ от ответственности: я практически ничего не знаю о конвейерах Azure, поэтому мой ответ основан на чтении документов. Дайте нам знать, если я ошибаюсь.
Ваша первая команда использует правильный синтаксис для ссылки на переменные среды в PowerShell (также внутри расширяемой строки (в двойных кавычках)).
(Другие команды, основанные на операторе подвыражения $(...)
, по ошибке пытаются выполнить команды с именем Env:BUILD_DAT
, ... вместо обращения к переменным.)
Ваша проблема в том, что целевые переменные среды не существуют .
Список предопределенных переменных, которые отображаются как переменные среды не не содержит переменные с именами Build.Date
/ $env:BUILD_DATE
и Build.Rev
/ $env:BUILD_REV
.
Напротив, переменные с именами Date
и Rev
, похоже, существуют - когда вы заявляете, они используются в определении формата по умолчанию для 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"