.SelectSingleNode im Powershell-Skript mit xPath funktioniert nicht beim Extrahieren von Werten aus der Datei web.config

Okay, hier ist der Ausschnitt aus meiner web.config-Datei:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<location path="." inheritInChildApplications="false">
<connectionStrings>
...
</connectionStrings>
</location>
<location path="." inheritInChildApplications="false">
<appSettings>
<!--IT Ops-->
<add key="SomeOtherKey" value="SomeOtherValue" />
<add key="SiteDomain" value="somedomain.com" />
<add key="SomeOtherKey" value="SomeOtherValue" />
....
</appSettings>
</location>
</configuration>

Ich versuche, den Knoten mithilfe von xPath über Powershell zu finden. Einige wichtige Hinweise zu dieser XML-Datei:

es gibt mehrere:

<location path="." inheritInChildApplications="false"> 

Werte in der XML-Datei. Sie umgeben andere Knoten wie etc ...

Mit diesem Skript kann ich die Verbindungszeichenfolgenwerte erfolgreich finden und ersetzen

$WebConfigFile = Join-Path $destination Web.config
[xml]$WebConfigXml = Get-Content ($WebConfigFile)
$WebConfigXml.configuration.location[2].connectionStrings.add | % { $_.connectionString = $_.connectionString -replace "some value", $sqlServerName }

Aber wenn ich gehe, um den Wert add key = "SiteDomain" mit diesem Skript zu ersetzen:

$node = $WebConfigXml.configuration.location[3].appSettings.SelectSingleNode("add[@key = 'SiteDomain']")
$node.value = "someValue"
$WebConfigXml.Save($WebConfigFile)

es funktioniert nicht. Der $ node-Wert enthält in diesem Fall eine leere Zeichenfolge.

Ich versuche auch nur, den Knoten wie folgt zu lesen:

$appSettingsSection = $WebConfigXml.configuration.location[3].appSettings;
$existingSiteDomain = $appSettingsSection.SelectSingleNode("add[@key='SiteDomain']")

Und ich erhalte immer noch eine leere Zeichenfolge für den Wert $ existingSiteDomain.

Ich habe mir Beispiele mit SelectSingleNode angesehen und kann es nicht ganz herausfinden. Ich bin mir nicht sicher, was ich falsch mache.

Danke, Mike

Antworten auf die Frage(1)

Ihre Antwort auf die Frage