哦,嘿,
因此,我有一些xml配置文件,我希望在其中找到特定的关键字"$Machine_Name$“,并将其替换为来自数据库的IP地址。
因此,我能够从数据库中获取正确的信息,但是我在替换$Machine_Name$配置文件中的XML时遇到了问题。
<add key="blah" value="soap.tcp://$Machine_Name$:PORT/blah" />
<add key="blah2" value="soap.tcop//$Machine_Name$:PORT/blahblah" />
<add key="blah3" value="soap.tcop//$Machine_Name$:PORT/blahblahblah" />我有一些类似于此的钩子行,我只想找到并替换$Machine_Name$ 50+。在本例中,我不认为获取内容xml file.exe.config和执行节点搜索和替换能为我带来任何好处。我将不得不在Powershell中构建所有的字符串,如果它们中的任何一个发生变化,那么我将不得不重做我的脚本,其中$Machine_Name$钩子将始终在那里。
无论如何,我到目前为止所尝试的似乎都不起作用:
(Get-Content C:\Test\Project.exe.config)
| ForEach-Object {$_ -replace "$Machine_Name$" , "*"}
| Set-Content C:\Test\Project.exe.config 任何帮助都将不胜感激!
好了伙计们抱歉..。我想通了..。
因为$是Powershell中的保留字符,所以我不能直接替换它。我必须在两个$中添加一个\
(Get-Content C:\Test\Project.exe.config)
| ForEach-Object {$_ -replace '\$Machine_Name\$', "IP" }
| Set-Content C:\Test\Project.exe.config 发布于 2015-02-28 10:42:16
由于您只是执行文字匹配和替换,因此可以使用string .Replace()方法。它更简单,而且如果使用foreach上的-Raw开关将其作为单个字符串读取,则不需要Get-Content。
(Get-Content C:\Test\Project.exe.config -Raw).Replace('$Machine_Name$','IP') |
Set-Content C:\Test\Project.exe.config https://stackoverflow.com/questions/28775213
复制相似问题