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 中的代理变量:
更新:
添加屏幕截图:
所以这是 TFS 2017 更新 3。您应该能够做您想做的事。您试图在哪里使用变量,作为构建中的参数或实际上在 PowerShell 脚本中?这些变量可以用作参数,并将在 运行 时间由代理替换并传递给脚本,但是如果您尝试在 $(...) 之类的脚本中访问它们,它将不起作用。您确实需要使用 $env:VARIABLE。变量部分中的所有变量都在 运行 时转换为环境变量,并带有它们的名称。因此,例如,如果您正在 运行 像下面的图像那样使用内联 PowerShell,您 可以 使用 $(..)
或者,如果您想将参数传递给 PowerShell 脚本,您 也可以。
但是在脚本中你不能。
我在从 powershell 脚本访问构建变量时遇到问题,例如我想访问 Agent.BuildDirectory。 我试过了:
$Build.SourcesDirectory
$(Build.SourcesDirectory)
none 有效。
我知道我可以使用 $Env:TF_BUILD_SOURCESDIRECTORY 但并非所有变量都可以这样使用。
你有什么建议吗?
您应该使用 $(Agent.BuildDirectory)
而不是 $(Agent.SourcesDirectory)
。检查下面 link 中的代理变量:
更新: 添加屏幕截图:
所以这是 TFS 2017 更新 3。您应该能够做您想做的事。您试图在哪里使用变量,作为构建中的参数或实际上在 PowerShell 脚本中?这些变量可以用作参数,并将在 运行 时间由代理替换并传递给脚本,但是如果您尝试在 $(...) 之类的脚本中访问它们,它将不起作用。您确实需要使用 $env:VARIABLE。变量部分中的所有变量都在 运行 时转换为环境变量,并带有它们的名称。因此,例如,如果您正在 运行 像下面的图像那样使用内联 PowerShell,您 可以 使用 $(..)
或者,如果您想将参数传递给 PowerShell 脚本,您 也可以。
但是在脚本中你不能。