Powershell将字符串附加到文本会创建一个新行

时间:2018-01-09 14:46:45

标签: powershell

我试图创建一个ps脚本,它附加字符串;历史记录直接;样式表但当前脚本正在创建一个额外的行,当我希望它直接追加它。

这就是假设的样子

;stylesheets;history

但这就是发生的事情

;stylesheets
;history

有人可以解释原因吗?

 (Get-Content K:\Temp\test.properties) | 
        Foreach-Object {
            $_ 
            if ($_ -match ";stylesheets") 
            {   ";history"
            }
        } | Set-Content K:\Temp\test.properties

2 个答案:

答案 0 :(得分:3)

你得到两行,因为你匹配时会返回两个对象。 @($_,";history")并且每个对象都写成一行。你可以在匹配时将它们组合成一个字符串。

(Get-Content K:\Temp\test.properties) | 
    Foreach-Object {
        if ($_ -match ";stylesheets") {
            "$_;history"
        } else {
            $_
        }
    } | Set-Content K:\Temp\test.properties

答案 1 :(得分:3)

替代解决方案:

(Get-Content K:\Temp\test.properties).Replace(';stylesheets',';stylesheets;history') |
Set-Content K:\Temp\test.properties