【问题标题】:How can I access pre-defined Release Management variables in a Powershell script?如何在 Powershell 脚本中访问预定义的发布管理变量?
【发布时间】:2016-06-07 15:35:32
【问题描述】:

根据documentation,有一堆预定义变量可用于在发布管理环境中运行的任务。如何从 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-error 而失败。

另外,我在发布定义中自己配置的变量,例如priority,我可以通过$env:priority访问。

作为一种解决方法,我可以在脚本中创建自己的参数,并将它们传递到任务定义中的参数字段中,但这与目的不符。

【问题讨论】:

    标签: powershell tfs-2015 ms-release-management azure-pipelines


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 2018-11-14
      • 2020-06-14
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多