如何使用PowerShell从TFS获取某些文件?
在我们发布分支后,需要更新某些配置文件。目前,我正在获取特定(新)分支上所有源代码的最新版本。这非常耗时,并且占用大量磁盘空间 是否有一种方法可以搜索/循环特定的分支并只获取符合特定条件的文件 例如:如何使用PowerShell从TFS获取某些文件?,tfs,branch,powershell-2.0,Tfs,Branch,Powershell 2.0,在我们发布分支后,需要更新某些配置文件。目前,我正在获取特定(新)分支上所有源代码的最新版本。这非常耗时,并且占用大量磁盘空间 是否有一种方法可以搜索/循环特定的分支并只获取符合特定条件的文件 例如: “get”部分使用TF的命令行界面很容易(tfget$/project/foo.proj)。我不知道如何在不首先获取最新版本的情况下循环遍历服务器对象 查看TFS PowerToys中的TFS PowerShell管理单元(需要自定义安装才能选择) 在32位PSH实例中加载管理单元后(在Micro
“get”部分使用TF的命令行界面很容易(
tfget$/project/foo.proj
)。我不知道如何在不首先获取最新版本的情况下循环遍历服务器对象 查看TFS PowerToys中的TFS PowerShell管理单元(需要自定义安装才能选择)
在32位PSH实例中加载管理单元后(在Microsoft.TeamFoundation.PowerShell中添加PSSnapin
),您可以使用:
,以获取受源代码管理的项目列表获取文件夹上的TFSItemProperty
获取或更新工作区中的所有或特定文件/文件夹Update TfsWorkspace
更新:在通过PowerToys为32位安装了PSH TFS管理单元后,您可以自己为64位安装PSH TFS管理单元(请参阅注释),在这种情况下,这不限于32位PSH实例。从TFS PowerToys查看TFS PowerShell管理单元(您需要自定义安装才能选择) 在32位PSH实例中加载管理单元后(
在Microsoft.TeamFoundation.PowerShell中添加PSSnapin
),您可以使用:
,以获取受源代码管理的项目列表获取文件夹上的TFSItemProperty
获取或更新工作区中的所有或特定文件/文件夹Update TfsWorkspace
更新:您可以通过PowerToys为32位安装PSH TFS管理单元后,自己为64位安装PSH TFS管理单元(请参阅注释),在这种情况下,这并不限于32位PSH实例。我最后使用了以下方法: 使用下载的tftp.exe自定义安装TFS Powershell管理单元 添加管理单元:
if ( (Get-PSSnapin -Name Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
}
Powershell脚本:
param( [string] $ServerBranchLocation )
$tfs=Get-TfsServer -name http://mytfsserver:8080/tfs
$TfExePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
$matchFoo = "foofile.foo"
foreach ($item in Get-TfsChildItem $ServerBranchLocation -r -server $tfs)
{
if ($item -match $matchFoo)
{ & "$TFExePath" get $item.ServerItem /force /noprompt }
}
我找不到使用管理单元获取最新版本的方法,所以我不得不使用ol'trusty tf.exe 我最后用了这个: 使用下载的tftp.exe自定义安装TFS Powershell管理单元 添加管理单元:
if ( (Get-PSSnapin -Name Microsoft.TeamFoundation.PowerShell -ErrorAction SilentlyContinue) -eq $null )
{
Add-PSSnapin Microsoft.TeamFoundation.PowerShell
}
Powershell脚本:
param( [string] $ServerBranchLocation )
$tfs=Get-TfsServer -name http://mytfsserver:8080/tfs
$TfExePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe"
$matchFoo = "foofile.foo"
foreach ($item in Get-TfsChildItem $ServerBranchLocation -r -server $tfs)
{
if ($item -match $matchFoo)
{ & "$TFExePath" get $item.ServerItem /force /noprompt }
}
我找不到使用管理单元获取最新版本的方法,所以我不得不使用ol'trusty tf.exe 我的印象是,在安装TFS PowerToys时默认安装TFS PowerShell管理单元。进行自定义安装给了我管理单元。此外,使用32位PSH也有效。它被加载到TFS特定的Powershell控制台中,但不是原始的Windows Powershell控制台。您当然可以更新您的配置文件(使用$profile找到)以加载TFS管理单元。我必须遵循其中的一个步骤才能使管理单元在我的64位控制台中工作。我还更新了我的配置文件以加载管理单元,这样我就不必在每个脚本中都这样做(而且它还可以移植给其他用户使用)。@Alicia Nice link,我认为最好允许管理单元自行安装(以防其他依赖项)。从高架64位PSH:< Windows >微软\NETFrase\Frave64 \ V2.0.50727 \ StudioU.EXE“C:\程序文件(x86)\微软Team Foundation Server 2010动力工具\微软.Team Foundation .PooToals.PixBase.Dll”<代码>谢谢@李察!我转移到一台新的Win8机器上,这帮了我很大的忙。我的印象是,在安装TFS PowerToys时默认安装了TFS PowerShell管理单元。进行自定义安装给了我管理单元。此外,使用32位PSH也有效。它被加载到TFS特定的Powershell控制台中,但不是原始的Windows Powershell控制台。您当然可以更新您的配置文件(使用$profile找到)以加载TFS管理单元。我必须遵循其中的一个步骤才能使管理单元在我的64位控制台中工作。我还更新了我的配置文件以加载管理单元,这样我就不必在每个脚本中都这样做(而且它还可以移植给其他用户使用)。@Alicia Nice link,我认为最好允许管理单元自行安装(以防其他依赖项)。从高架64位PSH:< Windows >微软\NETFrase\Frave64 \ V2.0.50727 \ StudioU.EXE“C:\程序文件(x86)\微软Team Foundation Server 2010动力工具\微软.Team Foundation .PooToals.PixBase.Dll”<代码>谢谢@李察!我转移到了一台新的Win8机器上,这帮了我很大的忙。要获得最新版本,请使用
Update TfsWorkspace
,而不列出版本(可能使用-强制始终获取服务器认为您在工作区中拥有的任何内容)。您可以通过tf get
使用()和-version
传递相同的版本规范。例如,更新TfsWorkspaceèfile›-force-version'T'
以获取最新版本。x86与x64的对比如何?要获取最新版本,请使用Update TfsWorkspace
,而不列出版本(可能使用-Force
始终获取服务器认为您在工作区中拥有的任何内容)。您可以通过tf get
使用()和-version
传递相同的版本规范。例如,更新TfsWorkspaceèfile›-force-version'T'
以获取最新版本。x86与x64的对比如何?