如何将我的TFS源服务器中的所有可用文件复制到目录中的文件夹?

时间:2010-04-29 09:08:48

标签: powershell

我想将我的TFS源服务器中可用的所有文件复制到目录中的文件夹。我尝试了下面的代码,但错误即将到来,同时实现相同。你能建议一个解决方案吗?

PS> C:\Windows\System32> Get-TfsItemProperty $/MyFirstTFSProj -r `
    -server xyzc011b| Where {$_.CheckinDate -gt (Get-Date).AddDays(-150)} |
    Copy-Item  D:\john\application1 -Destination C:\Test -whatif

Copy-Item : The input object cannot be bound to any parameters for the command
either because the command does not take pipeline input or the input and its pr
operties do not match any of the parameters that take pipeline input.
At line:2 char:14
+     Copy-Item  <<<<  D:\Deepu\SilverlightApplication5 -Destination C:\Test -w
hatif

2 个答案:

答案 0 :(得分:0)

我只是创建一个工作区/工作文件夹映射,并使用tf.exe工具在您感兴趣的日期获取文件,例如:

PS\> cd <root_of_workfolder_on_local_harddrive>
PS\> tf get . /r "/v:D$((Get-Date).AddDays(-150))"

如果这不是最终目的地,那么只需将目录内容复制到目的地即可。如果您不再需要工作区,请将其删除。

BTW我使用PowerTool cmdlet但发现它主要用于查询。例如,AFAICT,没有相应的“tf get”,你需要从服务器下拉文件。 IOW,您不能使用copy-item从TF服务器复制文件。您必须使用tf命令从服务器检索文件。

答案 1 :(得分:0)

  

回答我的问题

我发布了最终答案。借助此脚本,我们可以从TFS服务器复制所有文件,并将所有已签入的文件从特定日期复制到本地硬盘驱动器,同时保持层次结构。 享受.. !!

Get-TfsChildItem $/MyFirstSpectaProj -r -server xyz10co553 |
? { $_.CheckinDate -gt (Get-Date).AddDays(-01) } | % { $_.DownloadFile(@(join-path C:\test\xyz $_.ServerItem)) }