需要使用XPath替换XML文件中属性的值

3
以下是源/目标XML(Web.Config)文件的内容,我需要替换一个属性的值。这需要针对多个配置文件进行操作,因此需要使用PowerShell来完成。我尝试过在StackOverFlow上找到的替换字符串的代码,但是并没有成功。
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->

<configuration>
<connectionStrings>

<add name="PrcEntities"
   providerName="System.Data.SqlClient"
   connectionString="Server=DDD05DB01,63518;Database=BBBDB001;Trusted_Connection=true;multipleactiveresultsets=true;Pooling=false"/>

<add name="CoreItemContext"
 providerName="System.Data.SqlClient"
 connectionString="Server=DDD15DB03,63520;Database=BBBDB002;Trusted_Connection=true;multipleactiveresultsets=true;Pooling=true"/>

</connectionStrings>
..

..

....

</configuration>

这是我的PowerShell代码,用于查询上述XML文件中名为“ConnectionString”的属性。
$Path = "C:\Ps\Web.config" 
$con="connectionString"   
[xml]$Types = Get-Content $Path 
Select-Xml -Xml $Types -XPath "//add" | Select-Object -ExpandProperty Node|Select-Object name,$con | Format-List 

这将导致:

名称:PrcEntities 连接字符串:Server=DDD05DB01,63518;Database=BBBDB001;Trusted_Connection=true; multipleactiveresultsets=true;Pooling=false

名称:CoreItemContext 连接字符串:Server=DDD15DB03,63520;Database=BBBDB002;Trusted_Connection=true; multipleactiveresultsets=true;Pooling=true

现在,我想要用以下详细信息替换属性'connectionString'的值: Server=DBD05DB01,63518;Database=DDBDB001;Trusted_Connection=true;multipleactiveresultsets=true;Pooling=false,在两个地方(PrcEntities和CoreItemContext)

这个更改应该保存到同一个源文件中。请帮助我!

1个回答

7
$path = "D:\Web.Config"
[xml]$xml = Get-Content $path 

$xml.configuration.connectionStrings.add | Foreach-Object {
    $_.connectionString = 'Server=DBD05DB01,63518;Database=DDBDB001;Trusted_Connection=true;multipleactiveresultsets=true;Pooling=false'
}

$xml.Save($path)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接