Я пытаюсь найти способ обновить мой web.config для разных сред, обновив configSource для элемента appSettings в web.config.
Вот способ, которым я знаю, как это сделать.
$xml.get_DocumentElement().appSettings.configSource = $replaced_test
Проблема в том, что мне нужен один базовый сценарий, в котором я могу передать в разные узлы сценарий, который я хочу изменить и обновить, но я не уверен, как это сделать.
Например, я хочу иметь возможность вызывать скрипт powershell, подобный этому
changeWebConfig.ps1 nodeToChange newValueofNode
Надеюсь, это было достаточно ясно.
Это код, который у меня сейчас есть.
$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)
У меня была проблема с узлом конфигурации
Мне пришлось изменить его с
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
это до
<configuration>
Я еще не уверен, как найти узел с узлом конфигурации в его первоначальном состоянии, но я все ближе.
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