【问题标题】:Massive Replace text in files Source Control TFS using Powershell使用 Powershell 大量替换文件源代码控制 TFS 中的文本
【发布时间】:2015-03-06 10:54:49
【问题描述】:

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

我在源代码控制 TFS 中有一些 *.config 文件,工作区映射到本地文件夹 C:\TFS。

我在另一个文件夹(C:\Tests、C:\Windows、C:\Temp 等)中有一些来自 Source Control TFS 的 *.config 文件。

我想替换所有 *.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修改密码
  • 签入文件

我如何知道配置文件是否在 Source Control TFS 中? 关于这个过程有什么建议吗?

【问题讨论】:

    标签: c# powershell replace tfs


    【解决方案1】:

    这将遍历特定分支中的所有文件并输出名称。这将为您提供 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
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-11-10
      • 2010-10-11
      • 2016-11-23
      • 2010-10-19
      相关资源
      最近更新 更多