TFS在线2017通过PowerShell上传文件

时间:2018-02-27 12:09:09

标签: tfs tfs2017

我有一个2017年在线TFS试用版,我正试图找到一种使用powershell命令上传文件的方法。我尝试使用包装的api命令安装一些相关的模块,但它们都没有类似的东西。

有任何建议吗?here are actually the two commands i am trying to execute through ps

1 个答案:

答案 0 :(得分:0)

为什么你必须这样做?通过门户网站的行动更方便和友好。

无论您如何尝试使用REST API。

创建文件夹 :(在下面的示例中test0232下创建文件夹$/0522TFVCScrum/

Param(
   [string]$vsoAccount = "YourInstance",
   [string]$keepForever = "true",
   [string]$user = "test@hotmail.com",
   [string]$token = "PAT or Password here"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

function CreateJsonBody
{
    $value = @"
{"changes":[{"changeType":1,"item":{"path":"$/0522TFVCScrum/test0232","isFolder":true}}],"comment":"Added folder test0232"}
"@
 return $value
}

$json = CreateJsonBody

$uri = "https://$($vsoAccount).visualstudio.com/_apis/tfvc/changesets?api-version=4.1-preview.3"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

Write-host $result

使用以下正文创建文件 :(只需替换上面脚本中的Jsonbody,此示例中创建的0229test.ps1

{"changes":[{"changeType":1,"item":{"path":"$/0522TFVCScrum/0229test.ps1","contentMetadata":{"encoding":65001}},"newContent":{"content":"test0229","contentType":0}}],"comment":"Added file 0229test.ps1"}

上传文件:

找不到直接使用REST API上传文件的方法,但是您可以首先尝试copy files到工作区,然后使用Add command添加源控件中的文件,然后检入文件Checkin command

下载为Zip:

您可以使用工具跟踪API,然后您可以获得如下所示的URL:

https://{your account}.visualstudio.com/b3cbc52a-22f6-4de9-ae78-b2b305365ff8/_api/_versioncontrol/itemContentZipped?repositoryId=&path=%24%2F0522TFVCScrum%2Ftest0228&version=T&__v=5

然后你可以尝试在脚本中使用该url下载。