Ich versuche eine Möglichkeit zu finden, meine web.config für verschiedene Umgebungen zu aktualisieren, indem ich die configSource für das appSettings-Element in der web.config aktualisiere.Update configSource des XML-Elements in web.config mit Powershell durch Übergabe von Parametern
Hier sind die Art, wie ich es weiß.
$xml.get_DocumentElement().appSettings.configSource = $replaced_test
Das Problem ist, dass ich eine Basis Skript will, wo ich in verschiedenen Knoten an das Skript übergeben kann, die ich ändern und aktualisieren will, aber ich bin nicht sicher, wie es zu tun.
Zum Beispiel möchte ich in der Lage sein, einen Powershell-Skript zu nennen wie diese
changeWebConfig.ps1 nodeToChange newValueofNode
Ich hoffe, das klar genug war.
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 Ich wurde
ich es die Knoten Konfiguration war von
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
dieser zu
<configuration>
Ich bin nicht sicher ändern musste, wie um den Knoten mit der Konfiguration zu finden Der Ionenknoten ist noch in seinem ursprünglichen Zustand, 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
FYI Sie get_DocumentElement nicht verwenden müssen(). $ xml.SelectSingleNode ("...") funktioniert, da SelectSingleNode auch auf einem XmlDocument verfügbar ist, was in diesem Fall $ xml ist. –