使用 PowerShell 将文件从 tfs 版本控制复制到目录 [英] 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 版本控制复制到目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!