Как выполнить и вывести через Powershell - PullRequest
0 голосов
/ 04 июля 2019

Как реализовать вывод существующего значения из файла XML и измененного значения? Я использую этот код для изменения конфигурации в файлах XML:

[xml]$config = gc $DirectoryPath\Web.config
$config.configuration.appSettings.Item(0).value = "new-value1"
$config.configuration.appSettings.Item(1).value = "new-value2"     
$config.Save("$DirectoryPath\Web.config")

Мне нужно получить выходные данные обоих значений (существующих и измененных). Если я использую скобки:

(Write-Host($config.configuration.appSettings.Item(0).value) = "new-value1")

Я получаю необходимый результат:

value1 = new-value1

но изменения в файле XML не применяются.

И также будет здорово, если я получу существующий номер строки из XML-файла в выводе, что-то вроде:

value1 = new-value1 at line #10

1 Ответ

1 голос
/ 04 июля 2019

Невозможно вывести элемент XML и назначить ему новое значение одновременно. Используйте два утверждения:

Write-Host $config.configuration.appSettings.Item(0).value
$config.configuration.appSettings.Item(0).value = "new-value1"

Добавьте еще один оператор Write-Host после присвоения нового значения, если вы хотите вывести оба значения.

Вы можете немного сократить операторы, предварительно назначив родительский объект переменной:

$appSettings = $config.configuration.appSettings
Write-Host $appSettings.Item(0).value  # output old value
$appSettings.Item(0).value = "new-value1"
Write-Host $appSettings.Item(0).value  # output new value

Если вы пытаетесь получить старое и новое значение в одной строке вывода, вы можете сделать что-то вроде этого:

$appSettings = $config.configuration.appSettings
Write-Host -NoNewline $appSettings.Item(0).value  # output old value
$appSettings.Item(0).value = "new-value1"
Write-Host " =" $appSettings.Item(0).value        # output new value

Или перед изменением присвойте значение другой переменной, а затем выведите оба значения:

$appSettings = $config.configuration.appSettings
$oldvalue = $appSettings.Item(0).value
$appSettings.Item(0).value = "new-value1"
Write-Host ('{0} = {1}' -f $oldvalue, $appSettings.Item(0).value)

Что касается получения номеров строк, XML не является форматом, ориентированным на строки, поэтому он не будет работать.

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