我试图更新一组基于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是正常的,这只是一个快速表示,所有的信息都被剥离了。 –