2

我正在尝试运行一个 powershell 脚本作为 TFS2015 的构建步骤。在我的脚本中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 命令并获得适当的授权?

4

2 回答 2

1

这在任何地方都没有记录,您可以system.debug=true在构建定义中启用后找到​​相关信息,然后检查构建日志中的 TF 命令相关。例如,在获取源任务中,应该有如下内容:

tf vc workspaces /format:xml /collection:https://tfs.MyCompany.net/tfs/Collection/ /loginType:OAuth /login:.,******** /noprompt

根据您的错误消息,似乎内置tf.exe不支持您的构建代理上的 OAuth。

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

详细信息请参考此线程:运行命令时使用 /login 选项指定凭据

于 2017-10-24T07:36:49.047 回答
1

在当前版本的 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)

但是,当我在脚本中使用Name (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部分。这是我从源代码管理中提取代码时运行的命令模仿的(获取源代码)

于 2017-11-02T07:19:41.480 回答