动态替换文件内容

时间:2018-01-30 15:20:51

标签: powershell replace

我必须阅读一个属性文件(让我们说prop.txt)并动态更新它。

内容看起来像这样。

server.names=xyz[500],server2[500],test[500]

我想在server.names=之后用正确的值替换内容,例如:

server1.company.com[500],server2.company.com[500],server3.company.com[500]

我尝试了以下命令,但它正在替换server.names=。我想替换server.names=

的值
(Get-Content $path).Replace("server.names=",$NewServerNames) | Set-Content $path

知道如何替换server.names=的价值吗?

1 个答案:

答案 0 :(得分:2)

你很接近,但你的语法已关闭。此解决方案利用正则表达式捕获原始密钥:

$Pattern = 'server\.names='

Get-Content -Path $Path |
    ForEach-Object {
        If ($_ -match $Pattern)
        {
            $_ -replace "($Pattern).*","$1$NewServerNames"
        }
        Else
        {
            $_
        }
    } |
    Set-Content -Path $Path