tf.exe中的OAuth使用情况

时间:2017-10-23 09:06:01

标签: powershell tfs oauth tf-cli

我试图运行一个PowerShell脚本作为TFS2015的构建步骤。正如我在this回答中看到的,我在脚本中tf history /r /noprompt /loginType:OAuth /login:.,$env:SYSTEM_ACCESSTOKEN,但是我收到以下错误:TF10120: The value OAuth is not supported for option loginType.

此外,我没有看到/logintype选项的任何文档。它是否在Visual Studio 2015中被弃用/不受支持?

如果能够通过适当的授权从我的脚本调用tf命令,我该怎么办?

2 个答案:

答案 0 :(得分:0)

在任何地方都没有记录,您可以在构建定义中启用IF ATTR([Status]) = 'Accepted' THEN ( IF [Step3] = 1 THEN 'Step3' ELSEIF [STEP2] = 1 THEN 'Step2' ELSEIF [STEP1] = '1' THEN 'Step1' ELSE 'Step0') ELSE ATTR([Status]) 后找到相关信息,然后检查构建日志中是否有相关的TF命令。例如,在get source任务中,应该有类似的东西:

system.debug=true

根据您的错误消息,内置tf vc workspaces /format:xml /collection:https://tfs.MyCompany.net/tfs/Collection/ /loginType:OAuth /login:.,******** /noprompt似乎不支持您的构建代理上的OAuth。

作为一种解决方法,您可以使用tf.exe:如果您想以另一个用户身份运行该命令,则必须逐字指定/ login选项,将username替换为用户名,如有必要,还可以可以提供密码。

详情请参阅此主题:Use /login option to specify credentials when running a command

答案 1 :(得分:0)

在当前版本的VSTS中,我在使用此PowerShell脚本时遇到了相同的症状 - $ AccessToken作为$(System.AccessToken)传递。

Param(
  [string]$AccessToken
)

if (Test-Path -Path "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe") { "TF.exe Exists" }

$TFFile = Get-Item "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe"

Write-Host [string](& $TFFile.FullName vc workspaces /collection:*<collection name>* /loginType:OAuth /login:.,$AccessToken)

然而,当我在脚本中使用名称(TF.exe)而不是 FullName 时,我能够让它工作。以下脚本正在运行

Param(
  [string]$AccessToken
)

if (Test-Path -Path "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe") { "TF.exe Exists" }

$TFFile = Get-Item "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\TF.exe"

Write-Host [string](& $TFFile.Name vc workspaces /collection:*<collection name>* /loginType:OAuth /login:.,$AccessToken)

我与原始命令行的另一个区别是添加了 vc 部分。这是我从源代码控制(Get Sources)中提取代码时运行的命令中模仿的