Это ожидаемое поведение.
Предопределенные переменные автоматически устанавливаются системой и доступны только для чтения.
Однако если вы определили переменную конвейера с тем же именем в качестве переменной среды (например, PATH
), значение вашей конвейерной переменной переопределяет переменную среды хоста агента.
Подробнее см. Переменные среды .
Итак, в вашем сценарии вы фактически определили новую переменную конвейера с тем же именем, что и у предварительно определенного, но на самом деле не перезаписать предопределенную переменную.И они могут использоваться только в конвейерах ...
ОБНОВЛЕНИЕ:
Ну, документация несколько вводит в заблуждение относительно Environment Variables
и делает некоторыеСлегка противоречивые утверждения об их читабельности.Фактически все переменные (* предопределенные, сборка, окружение ...) в основном работают как переменные окружения , упомянутые здесь .
Кстати, вы можете получить все доступные переменные окружения с помощью get-childitem -path env:*
вконвейер. *
Сценарий PowerShell, например:
$environmentVars = get-childitem -path env:*
foreach($var in $environmentVars)
{
$keyname = $var.Key
$keyvalue = $var.Value
Write-Output "${keyname}: $keyvalue"
}