将整个解决方案或特定分支从TFS下载到本地文件夹

时间:2016-07-22 07:54:47

标签: powershell tfs

大家好我以下脚本从TFS下载文件,使用powershell脚本,但是我需要下载整个解决方案我该如何实现呢

cls
$tfsCollectionUrl = New-Object System.URI("http://localhost:8080/tfs/defaultcollection");
[Microsoft.TeamFoundation.Client.TfsTeamProjectCollection] $tfsCollection = Get-TfsServer $tfsCollectionUrl
$VersionControl = $tfsCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
$DestinationFile = [IO.Path]::GetTempFileName()
$VersionControl.DownloadFileByUrl('$/MyFirstProject/WebApplication1/WebApplication1/WebForm1.aspx.cs', $DestinationFile)

Invoke-Item $DestinationFile

此外,这不是检查他是否有权下载,我想提示输入用户名和密码而不是直接下载。如果是的话,我是否可以为bitbucket实现相同的目标

3 个答案:

答案 0 :(得分:1)

相同的代码转换为powershell

connect to tfs and download the files present in it VS2010

对于凭证使用上述逻辑

Write-Host "Enter source location "
$sourceLocation = Read-Host

$tfsCollectionUrl = New-Object System.URI($sourceLocation);

Write-Host "Enter server path "
$serverPath = Read-Host

Write-Host "Enter local path to download"
$localPath = Read-Host

[Microsoft.TeamFoundation.Client.TfsTeamProjectCollection] $tfsCollection = Get-TfsServer $tfsCollectionUrl

$VersionControl = $tfsCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
$latest = [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest
$recursionType = [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]::Full
try
{

    foreach ($item in $VersionControl.GetItems($serverPath, $latest,$recursionType).Items)
    {
        $target =   [io.path]::Combine($localPath,$item.ServerItem.Substring(2))
        $exists=[System.IO.Directory]::Exists($target)

        if($item.ItemType -eq "Folder" -and !$exists)
        {
            New-Item $target -Type Directory
        }
        if($item.ItemType -eq "File")
        {
            $item.DownloadFile($target)
        }
    }
    Write-Host "`n Successfully downloaded all the files to the target folder: " $localPath -ForegroundColor Green
}
catch
{
    $ErrorMessage = $_.Exception.Message
    $FailedItem = $_.Exception.ItemName
    Break
}

答案 1 :(得分:0)

一种简单的方法是让工作空间映射多个项目并从Powershell运行tf get command

您还可以使用tf workspace命令行管理工作区。

答案 2 :(得分:0)

简单的方法是:

  1. 创建工作区
  2. 映射工作区
  3. 获取所有文件。
  4. 示例代码:

    $tfsCollectionUrl = New-Object System.URI("[team project collection url");
    
    $username="[user name]"
    $password="[password]"
    $domain="[domain]"
    $cret = new-object System.Net.NetworkCredential($username, $password, $domain)
    $teamProjectCollection=new-object Microsoft.TeamFoundation.Client.TfsTeamProjectCollection($tfsCollectionUrl,$cret)
    $teamProjectCollection.EnsureAuthenticated()
    $VersionControl = $teamProjectCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
    $workspace = $VersionControl.CreateWorkspace("BasicSccExamplePS", $VersionControl.AuthorizedUser);
    $workspace.Map("[file or folder server path, for example:$/TestTeam/FolderA]", "[local path]")
    $workspace.Get()
    

    您可以发现它允许您提供凭据,因此您可以让用户提供用户名,密码,然后使用该帐户连接到TFS。

    此致