使用Powershell在文件源代码控制TFS中大量替换文本

时间:2015-01-08 10:45:09

标签: c# powershell replace tfs tfs2008

我在所有C:驱动器中的* .config文件中有很多连接字符串。我使用Windows 8,VS 2012,TFS 2008。

我在Source Control TFS中有一些* .config文件,工作区映射在本地文件夹C:\ TFS中。

我在源代码管理TFS中有一些* .config文件,在另一个文件夹中(C:\ Tests,C:\ Windows,C:\ Temp等)。

我想在所有* .config文件中替换密码。

使用像Powershell或bat / cmd文件这样的脚本可能更好。

 <add name="ConnectionStrings.Oracle.ConnectionLog" connectionString="DATA SOURCE=xxx;PASSWORD=AAAAAAA;PERSIST SECURITY INFO=True;USER ID=MYUSER"
  providerName="Oracle.DataAccess.Client" />

我用

var configs = Directory.GetFiles(@"C:\", "*.config");

configs.ForEach( f => ReplacePasswordOfFile(f));

如果* .config文件不在TFS中,我想要:

  • 如果文件中有文件,则删除文件中的ReadOnly属性
  • 使用string.ReplaceFile.WriteAllText更改密码

如果* .config文件在TFS中,我想要:

  • 获取最新版本的文件
  • 查看文件
  • 使用string.ReplaceFile.WriteAllText更改密码
  • 签入文件

如何知道源代码管理TFS中是否有配置文件? 关于这个过程的任何建议?

1 个答案:

答案 0 :(得分:0)

这将遍历特定分支中的所有文件并输出名称。这将为您提供TFS中的配置文件列表。

$serverBranchLocation = "$/Project/Branch" 
$tfs=Get-TfsServer -name http://tfs:8080/tfs

foreach ($item in Get-TfsChildItem $serverBranchLocation -recurse -server $tfs)  { 
    if ($item -match "*.config") {
        echo $item
    } 
}