编辑XML对象 - 连接字符串

时间:2016-01-08 22:49:08

标签: xml powershell

我将一个XML配置作为名为Route::group(['middleware' => ['web']], function () { // all routes written here return 500 }); //outside routes works fine 的xml对象加载到我的脚本中。我试图用我自己的字符串替换连接字符串值。这是我到目前为止找到的目标字符串:

$appConfig

我基本上想要类似于此的东西:

$appConfig.configuration.connectionStrings.add |
    ? {$_.name -eq $dbName} |
    select connectionString

我很确定我需要创建一个变量并使用$appConfig.configuration.connectionStrings.add | ? {$_.name -eq $dbName} | select connectionString = $updatedConnectionString 填充它,但每次尝试时我都会使用另一个XML对象,而不是按预期编辑目标$appConfig对象。我将$appConfig写回其原始文件位置并完成编辑。我似乎无法在这里获得正确的语法。

我的XML示例与字符串相关:

$appConfig

1 个答案:

答案 0 :(得分:5)

如果你想使用点符号,你可以这样做:

$node = $appConfig.configuration.connectionStrings.add |
        Where-Object {$_.name -eq $dbName}
$node.connectionString = $updatedConnectionString
$appConfig.Save()

或类似(如果您不想在修改其属性之前将所选节点分配给变量):

($appConfig.configuration.connectionStrings.add | Where-Object {$_.name -eq $dbName}).connectionString = $updatedConnectionString
$appConfig.Save()

另一种方法是将SelectSingleNode()方法与XPath表达式一起使用,例如:像这样:

($appConfig.SelectSingleNode("//add[@name='$dbName']").connectionString = $updatedConnectionString
$appConfig.Save()