我試圖更新一組基於XML的.config文件。有一個包含一個加號,我不能用我的腳本替換文件中的字符串:無法通過PowerShell在文本文件中使用加號「+」替換字符串值
< SharedPassKey=123456789abcdefghi/JKLM+nopqrst= />
如果我包括加號,該腳本不執行任何操作。由於所有的配置不同,我需要替換文本 - 不能只用新文件。
想要的結果是文件中的匹配值被替換爲指定的值,但+
符號不允許這樣做。這是我PS的腳本:
$DIRs = Get-ChildItem -Path "C:\TEST" -Directory
Get-ChildItem $DIRs -File -Recurse -Filter *.config |
ForEach { (Get-Content $_.FullName) |
ForEach { $_ -replace '< SharedPassKey=123456789abcdefghi/JKLM+nopqrst= />','< SharedPassKey=123456789abcdefghi/JKLM.nopqrst= />' } |
Set-Content $_.FullName }
作爲一個測試,我全部換成了文字到加號,它工作得很好,但我已經離開出現在新文本的末尾加號以下是腳本中的「+ nopqrst」。
在PSv3上運行,FYI。
嘗試加號前的反斜槓字符 – thepi
'< foo=bar= />'無效的XML。你的數據是真的嗎?否則,使用XML解析器可能是更合適的方法。 –
@AnsgarWiechers - 沒有我的XML是正常的,這只是一個快速表示,所有的信息都被剝離了。 –