Невозможно вывести элемент 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 не является форматом, ориентированным на строки, поэтому он не будет работать.