powershell - 如何访问 Powershell 脚本中预定义的发布管理变量?

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

根据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 recognize - 错误。

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

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

最佳答案

使用花括号,因为变量名称包含 .。示例:

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

关于powershell - 如何访问 Powershell 脚本中预定义的发布管理变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37683654/

相关文章:

powershell - 为什么 PowerShell 间歇性找不到 List[string].Add() 方法?

visual-studio - 在 powershell 中打开控制台应用程序

visual-studio - TFS 回滚与 "Get This Version"

TFS 2015 内部版本 : Test results not being published

Visual Studio Team Services REST API 的 AJAX 跨域问题

visual-studio - 将 TFS 构建与发布管理集成

azure - 执行暂停 Azure SQLDatawarehouse ps 脚本时出错

arrays - Powershell验证我的数组元素类型

azure - Visual Studio Team Services - 发布管理无法找到测试

asp.net - 如何使用 VSTS 发布管理部署到 Azure 资源组