.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