Установка значений конфигурации с помощью Powershell - PullRequest
0 голосов
/ 04 октября 2018

У меня есть следующий код:

#Set the .config settings
$appSettings = (Get-AzureWebsite -Name $webAppName -Slot $SlotName).AppSettings
$conStrings = (Get-AzureWebsite -Name $webAppName -Slot $SlotName).ConnectionStrings    

$xmlDocument = New-Object XML
$path = (Get-ChildItem -Path ${location} -Filter "*.exe.config" -Recurse).Fullname
$xmlDocument.Load($path)

foreach($setting in $XmlDocument.configuration.appSettings.ChildNodes)
{
  $setting.Value = $appSettings[$setting.Key].Value
}

$xmlDocument.Save($path)

, и я получаю следующую ошибку при запуске (контекст - Осьминог)

Invoke-Expression : Cannot set "value" because only strings can be used as values to set XmlNode properties.

Я не могу понять этокак я ожидал, что значение будет строкой.Я пытаюсь установить значения в xml, совпадающие со значениями в наборах приложений панели мониторинга Azure (и строках конфигурации), но я просто не могу заставить это работать.

Как правильно настроить каждый из параметров

1 Ответ

0 голосов
/ 05 октября 2018

Это то, что мне подходит в итоге:

#Set the .config settings
$appSettings = (Get-AzureWebsite -Name $webAppName -Slot $SlotName).AppSettings
$conStrings = (Get-AzureWebsite -Name $webAppName -Slot $SlotName).ConnectionStrings

#Load xml config file
$xmlDocument = New-Object XML
$path = (Get-ChildItem -Path ${location} -Filter "*.exe.config" -Recurse).Fullname
$xmlDocument.Load($path)

#Update settings from appSettings
foreach($setting in $appSettings.GetEnumerator())
{

    $targetNode = $XmlDocument.SelectSingleNode("//configuration/appSettings/add[@key='$($setting.Name)']")
    if($targetNode -ne $null)
    {
        Write-Host "Target: $($targetNode.Key) being set to $($setting.Value)"
        $targetNode.Value = $setting.Value
    }   
    else
    {
        Write-Host "Target Node was null"
        Write-Host "Setting was Key: $($setting.Name) Value: $($setting.Value)"
    }
}

#Update connection string section
foreach($setting in $conStrings.GetEnumerator())
{
    $targetNode = $XmlDocument.SelectSingleNode("//configuration/connectionStrings/add[@name='$($setting.Name)']")
    if($targetNode -ne $null)
    {
        Write-Host "Target: $($targetNode.Name) being set to $($setting.connectionString)"
        $targetNode.connectionString = $($setting.connectionString)
    }   
    else
    {
        Write-Host "Target Node was null"
        Write-Host "Setting was Key: $($setting.Name) Value: $($setting.connectionString)"
    }
}

$xmlDocument.Save($path)

Я довольно новичок в Powershell и, должно быть, я сделал каждую ошибку, делая это, но это сделано сейчас, и я узнал кое-что полезное,\ 0 /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...