Aktualisieren Sie configSource des XML-Elements in web.config mithilfe von Powershell, indem Sie Parameter übergeben

Ich versuche herauszufinden, wie ich meine web.config für verschiedene Umgebungen aktualisieren kann, indem ich die configSource für das appSettings-Element in der web.config aktualisiere.

Ich weiß wie es geht.

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

Das Problem ist, dass ich ein Basisskript möchte, in dem ich verschiedene Knoten an das Skript übergeben kann, das ich ändern und aktualisieren möchte, aber ich bin nicht sicher, wie ich das tun soll.

Zum Beispiel möchte ich in der Lage sein, ein Powershell-Skript wie dieses aufzurufen

changeWebConfig.ps1 nodeToChange newValueofNode

Ich hoffe das war klar genug.

Dies ist der Code, den ich jetzt habe.

$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)

Das Problem, das ich hatte, war der Konfigurationsknoten

Ich musste es abändern

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

das zu

<configuration>

Ich bin nicht sicher, wie ich den Knoten mit dem Konfigurationsknoten in seinem ursprünglichen Zustand finden soll, aber ich komme näher.

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage