我有一个XML配置作为xml对象加载到我的脚本中$appConfig.我试图用我自己的字符串替换连接字符串值.这是我到目前为止找到的目标字符串:
$appConfig.configuration.connectionStrings.add |
? {$_.name -eq $dbName} |
select connectionString
Run Code Online (Sandbox Code Playgroud)
我基本上想要类似于此的东西:
$appConfig.configuration.connectionStrings.add |
? {$_.name -eq $dbName} |
select connectionString = $updatedConnectionString
Run Code Online (Sandbox Code Playgroud)
我很确定我需要创建一个变量并用它来填充它$appConfig但每次我尝试时我最终都会使用另一个XML对象而不是$appConfig按预期编辑目标对象.我将$appConfig其写回原始文件位置并完成编辑.我似乎无法在这里获得正确的语法.
我的XML示例与字符串相关:
<configuration>
<connectionStrings>
<add name="db" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="dbFiles" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="dbReporting" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="Logging" connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
如果你想使用点符号,你可以这样做:
$node = $appConfig.configuration.connectionStrings.add |
Where-Object {$_.name -eq $dbName}
$node.connectionString = $updatedConnectionString
$appConfig.Save()
Run Code Online (Sandbox Code Playgroud)
或者像这样(如果您不想在修改其属性之前将所选节点分配给变量):
($appConfig.configuration.connectionStrings.add | Where-Object {$_.name -eq $dbName}).connectionString = $updatedConnectionString
$appConfig.Save()
Run Code Online (Sandbox Code Playgroud)
另一种方法是将该SelectSingleNode()方法与XPath表达式一起使用,例如:
($appConfig.SelectSingleNode("//add[@name='$dbName']").connectionString = $updatedConnectionString
$appConfig.Save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
560 次 |
| 最近记录: |