Копирование файлов из TFS versioncontrol в каталог с помощью PowerShell
Кто-нибудь знает, можно ли скопировать файлы из системы управления версиями TFS (2013 Update 2) в определенную папку на вашем компьютере?
Предположим, у меня есть путь к серверу$/BuildTemplate2013/BuildProcessSource
, и я хочу, чтобы все файлы этого каталога были скопированы/загружены в C:destinationDir
с помощью PowerShell. Разве это возможно? У меня установлен TFS 2013 Update 2 Power tools, но я не могу найти ни одной команды для этого...3 ответа:
Я создал сценарий PowerShell, который подключается к серверу TFS с помощью сборок TFS. Затем я перебираю файлы на сервере (по определенному пути) и загружаю их рекурсивно.
# 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 Power Tools.
Выберите опцию установки средств TFS powershell.
Затем вы можете использовать командлет Update-TfsWorkspace для получения последних файлов. Пожалуйста, убедитесь, что у вас уже есть рабочее пространство, созданное для каталога, в который вы должны получить последние файлы. Затем выполните следующие действия
cd <Your Directory Path> Update-TfsWorkspace
При выполнении команды let убедитесь, что рабочее пространство создан для пользователя, который собирается выполнить powershell.
Просто выполните его на
Команда, которую вы ищете, является
tf.exe get
и поставляется с клиентскими средствами TFS, то есть Visual Studio или автономным средством Team Explorer. Для использованияtf.exe get
Вам потребуется настроить отображение рабочего пространства и рабочих папок.Если вы предпочитаете использовать TF Power Tools, то используйте команду
Update-TfsWorkspace
для получения файлов. Я полагаю, что вам все еще понадобится рабочее пространство, определенное с помощью сопоставления рабочих складок.Update-TfsWorkspace -Item $/TeamProject/Path/Path2/Item -Recurse