使用PowerShell将文件从tfs versioncontrol复制到目录 [英] Copy files from tfs versioncontrol to directory with PowerShell
问题描述
有人知道是否可以将文件从TFS(2013更新2)源控制复制到计算机上的特定文件夹吗?
Does somebody know if it is possible to Copy files from TFS (2013 Update 2) source control to a specific folder on your computer?
假设我有服务器路径$/BuildTemplate2013/BuildProcessSource
,并且我希望使用PowerShell将该目录的所有文件复制/下载到C:\destinationDir
.那可能吗?我安装了TFS 2013 Update 2 Power工具,但是找不到任何命令...
Let's say I have the server path $/BuildTemplate2013/BuildProcessSource
and I want all the files of that directory to be copied/downloaded to C:\destinationDir
with PowerShell. Is that possible? I have the TFS 2013 Update 2 Power tools installed but I can't find any command for that...
推荐答案
我创建了一个PowerShell脚本,该脚本通过TFS程序集连接到TFS服务器.然后,我遍历服务器上的文件(在特定路径中)并递归下载.
I've created a PowerShell script that connects to the TFS server with the TFS assemblies. I then loop through the files on the server (in a specific path) and download it recursively.
# The deploy directory for all the msi, zip etc.
$AutoDeployDir = "Your TFS Directory Server Path"
$deployDirectory = $($Env:TF_BUILD_DROPLOCATION + "\Deploy\" + $Env:TF_BUILD_BUILDNUMBER)
# Add TFS 2013 dlls so we can download some files
Add-Type -AssemblyName 'Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Add-Type -AssemblyName 'Microsoft.TeamFoundation.VersionControl.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
$tfsCollectionUrl = 'http://YourServer:8080/tfs/YourCollection'
$tfsCollection = New-Object -TypeName Microsoft.TeamFoundation.Client.TfsTeamProjectCollection -ArgumentList $tfsCollectionUrl
$tfsVersionControl = $tfsCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer])
# Register PowerShell commands
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
# Get all directories and files in the AutoDeploy directory
$items = Get-TfsChildItem $AutoDeployDir -Recurse
# Download each item to a specific destination
foreach ($item in $items) {
# Serverpath of the item
Write-Host "TFS item to download:" $($item.ServerItem) -ForegroundColor Blue
$destinationPath = $item.ServerItem.Replace($AutoDeployDir, $deployDirectory)
Write-Host "Download to" $([IO.Path]::GetFullPath($destinationPath)) -ForegroundColor Blue
if ($item.ItemType -eq "Folder") {
New-Item $([IO.Path]::GetFullPath($destinationPath)) -ItemType Directory -Force
}
else {
# Download the file (not folder) to destination directory
$tfsVersionControl.DownloadFile($item.ServerItem, $([IO.Path]::GetFullPath($destinationPath)))
}
}
这篇关于使用PowerShell将文件从tfs versioncontrol复制到目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!