TFS 构建和 Powershell:如何访问预定义的构建变量

TFS Build and Powershell: how to acces predefined build variables

我在从 powershell 脚本访问构建变量时遇到问题,例如我想访问 Agent.BuildDirectory。 我试过了:

$Build.SourcesDirectory
$(Build.SourcesDirectory)

none 有效。

我知道我可以使用 $Env:TF_BUILD_SOURCESDIRECTORY 但并非所有变量都可以这样使用。

你有什么建议吗?

您应该使用 $(Agent.BuildDirectory) 而不是 $(Agent.SourcesDirectory)。检查下面 link 中的代理变量:

https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables

更新: 添加屏幕截图:

所以这是 TFS 2017 更新 3。您应该能够做您想做的事。您试图在哪里使用变量,作为构建中的参数或实际上在 PowerShell 脚本中?这些变量可以用作参数,并将在 运行 时间由代理替换并传递给脚本,但是如果您尝试在 $(...) 之类的脚本中访问它们,它将不起作用。您确实需要使用 $env:VARIABLE。变量部分中的所有变量都在 运行 时转换为环境变量,并带有它们的名称。因此,例如,如果您正在 运行 像下面的图像那样使用内联 PowerShell,您 可以 使用 $(..)

或者,如果您想将参数传递给 PowerShell 脚本,您 也可以

但是在脚本中你不能。