Actualice configSource del elemento XML en web.config usando Powershell pasando los Parámetros

Estoy tratando de encontrar una manera de actualizar mi web.config para diferentes entornos actualizando configSource para el elemento appSettings en web.config.

Esta es la forma en que sé cómo hacerlo.

$xml.get_DocumentElement().appSettings.configSource = $replaced_test

El problema es que quiero un script base donde pueda pasar diferentes nodos al script que quiero cambiar y actualizar, pero no estoy seguro de cómo hacerlo.

Por ejemplo, quiero poder llamar a un script de powershell como este

changeWebConfig.ps1 nodeToChange newValueofNode

Espero que esto haya sido suficientemente claro.

Este es el código que tengo ahora.

$webConfigPath = "C:\web.config"   

# Get the content of the config file and cast it to XML 
$xml = [xml](get-content $webConfigPath) 

#this was the trick I had been looking for  
$root = $xml.get_DocumentElement()."system.serviceModel".client.configSource  = $replace

# Save it  
$xml.Save($webConfigPath)

El problema que estaba teniendo era el nodo de configuración.

Tuve que cambiarlo de

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

Esto a

<configuration>

No estoy seguro de cómo encontrar el nodo con el nodo de configuración en su estado original todavía, pero me estoy acercando.

function Set-ConfigAppSetting
([string]$PathToConfig=$(throw 'Configuration file is required'),
         [string]$Key = $(throw 'No Key Specified'), 
         [string]$Value = $(throw 'No Value Specified'))
{
    if (Test-Path $PathToConfig)
    {
        $x = [xml] (type $PathToConfig)
        $node = $x.SelectSingleNode("//client[@configSource]")
        $node.configSource = $Value
        $x.Save($PathToConfig)
    }
} 

set-configappsetting "c:\web.config" CurrentTaxYear ".\private$\dinnernoworders" -confirm

Respuestas a la pregunta(2)

Su respuesta a la pregunta