首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Powershell查找并替换配置文件中的$

使用Powershell查找并替换配置文件中的$
EN

Stack Overflow用户
提问于 2015-02-28 06:10:44
回答 1查看 2.4K关注 0票数 1

哦,嘿,

因此,我有一些xml配置文件,我希望在其中找到特定的关键字"$Machine_Name$“,并将其替换为来自数据库的IP地址。

因此,我能够从数据库中获取正确的信息,但是我在替换$Machine_Name$配置文件中的XML时遇到了问题。

代码语言:javascript
复制
<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$钩子将始终在那里。

无论如何,我到目前为止所尝试的似乎都不起作用:

代码语言:javascript
复制
(Get-Content C:\Test\Project.exe.config)  
| ForEach-Object {$_ -replace "$Machine_Name$" , "*"} 
| Set-Content C:\Test\Project.exe.config  

任何帮助都将不胜感激!

好了伙计们抱歉..。我想通了..。

因为$是Powershell中的保留字符,所以我不能直接替换它。我必须在两个$中添加一个\

代码语言:javascript
复制
(Get-Content C:\Test\Project.exe.config) 
| ForEach-Object {$_ -replace '\$Machine_Name\$', "IP" } 
| Set-Content C:\Test\Project.exe.config 
EN

回答 1

Stack Overflow用户

发布于 2015-02-28 10:42:16

由于您只是执行文字匹配和替换,因此可以使用string .Replace()方法。它更简单,而且如果使用foreach上的-Raw开关将其作为单个字符串读取,则不需要Get-Content

代码语言:javascript
复制
(Get-Content C:\Test\Project.exe.config -Raw).Replace('$Machine_Name$','IP') | 
 Set-Content C:\Test\Project.exe.config 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28775213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档