TFS 构建和 Powershell:如何访问预定义的构建变量
Posted
技术标签:
【中文标题】TFS 构建和 Powershell:如何访问预定义的构建变量【英文标题】:TFS Build and Powershell: how to acces predefined build variables 【发布时间】:2020-06-14 01:08:49 【问题描述】:我在从 powershell 脚本访问构建变量时遇到问题,例如我想访问 Agent.BuildDirectory。 我试过了:
$Build.SourcesDirectory
$(Build.SourcesDirectory)
没有任何作用。
我知道我可以使用 $Env:TF_BUILD_SOURCESDIRECTORY,但并非所有变量都可以通过这种方式使用。
你有什么建议吗?
【问题讨论】:
嗨@Darqer,你能告诉我们你使用的是哪个版本的TFS吗? 我使用的是 15.117 版 【参考方案1】:所以这是 TFS 2017 Update 3。你应该能够做你想做的事。您在哪里尝试使用变量,作为构建中的参数还是实际在 PowerShell 脚本中?这些变量可以用作参数,并在运行时由代理替换并传递给脚本,但如果您尝试在 $(...) 之类的脚本中访问它们,它将不起作用。您确实需要使用 $env:VARIABLE。变量部分中的所有变量都会在运行时转换为带有名称的环境变量。因此,例如,如果您正在运行如下图所示的内联 PowerShell,您可以使用 $(..)
或者,如果您想将参数传递给 PowerShell 脚本,您也可以。
但你不能从脚本内部。
【讨论】:
这可以解释我的问题,我尝试在 ps1 脚本中使用变量。非常感谢您的回答:)。【参考方案2】:您应该使用$(Agent.BuildDirectory)
而不是$(Agent.SourcesDirectory)
。从以下链接检查代理变量:
https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables
更新: 添加截图:
【讨论】:
是的,我在我的问题中犯了一个错误,在我的脚本中有 $(Build.SourcesDirectory) 但对于 $(Agent.BuildDirectory) 我有同样的效果,它不起作用。 我使用的是 ps1 脚本文件,而不是内联脚本。我不知道这些方法之间的数据访问存在差异。谢谢你的帮助:)。以上是关于TFS 构建和 Powershell:如何访问预定义的构建变量的主要内容,如果未能解决你的问题,请参考以下文章
TFS 构建通过 REST API 和 PowerShell 发布测试结果 TRX