Как я могу получить доступ к предварительно определенным переменным Release Management в сценарии Powershell?

Согласно документации, есть набор предопределенных переменных, доступных для задач, которые выполняются в среде для управления выпусками. Как мне получить доступ к этим переменным из сценария Powershell?

Например: переменная System.TeamProject определена и должна возвращать текущий TFS TeamProject. Однако когда я пишу:

Write-Host "environment var: $env:System.TeamProjectId"

Вывод в файле журнала:

2016-06-07T09:26:49.5537161Z environment var: release.TeamProject

Однако в файле журнала Initialize отображается следующее:

4 2016-06-07T09:26:40.4121001Z Environment variables available are below.  Note that these environment variables can be referred to in the task (in the ReleaseDefinition) by replacing "_" with "." e.g. AGENT_NAME environment variable can be referenced using Agent.Name in the ReleaseDefinition: 
 ...
34 2016-06-07T09:26:40.4277002Z [SYSTEM_COLLECTIONID] --> [2043d9ba-7ec9-43f0-8e6c-96a8b28f55d8]
35 2016-06-07T09:26:40.4277002Z [SYSTEM_TEAMPROJECTID] --> [9718773d-2aee-4625-91c6-80de16301479]
36 2016-06-07T09:26:40.4277002Z [SYSTEM_TEAMPROJECT] --> [MyProject]
37 2016-06-07T09:26:40.4277002Z [SYSTEM_CULTURE] --> [en-US]

Значит, переменная есть. Я попробовал $(System.TeamProject), как предлагалось где-то еще, но это не помогло с The term ... is not recognized-ошибкой.

Кроме того, переменные, которые я сконфигурировал сам в определении выпуска, например priority, я я могу получить доступ с помощью $env:priority.

В качестве обходного пути я могу создать свои собственные параметры в сценарии и передать их в поле «Аргументы» в определении задачи, но это не дает цели.


person RoelF    schedule 07.06.2016    source источник


Ответы (1)


Используйте фигурные скобки, потому что имя переменной содержит .. Пример:

PS C:\> ${Env:System.TeamProject} = "Var contents"
PS C:\> ${Env:System.TeamProject}
Var contents
PS C:\> Write-Host "Prefix - $Env:System.TeamProject"
Prefix - .TeamProject
PS C:\> Write-Host "Prefix - ${Env:System.TeamProject}"
Prefix - Var contents
person Bill_Stewart    schedule 07.06.2016