Приветствую!
Столкнулся с проблемой отредактировать xml в powershell. Дело не хитрое, но что-то идет не так.
Ниже упрощенный кусок xml, мне требуется изменить параметр SerialConnectionTimeout.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<applicationSettings>
<Vendor.Some.App.Properties.Settings>
<setting name="TimeoutStep" serializeAs="String">
<value>300</value>
</setting>
<setting name="TimeoutDuration" serializeAs="String">
<value>5000</value>
</setting>
<setting name="SerialConnectionTimeout" serializeAs="String">
<value>1000</value>
</setting>
</Vendor.Some.App.Properties.Settings>
</applicationSettings>
</configuration>
Пробую читать так:
$xml = New-Object -TypeName XML
$file = 'C:\config.xml'
$xml.Load($file)
$xml.configuration.applicationSettings.'Vendor.Some.App.Properties.Settings'.setting.SerialConnectionTimeout
- Получаю NULL. Там не совсем те объекты, которые я ожидал увидеть. Свойства не именованные, по имени обратиться не могу - объекты имеют стандартные свойства name,value.
Можно с помощью конструкции where прочитать, но смысла не вижу, так как мне эти данные нужно отредактироваnь и сохранить с прежней структурой обратно.
$xml.configuration.applicationSettings.'Vendor.Some.App.Properties.Settings'.setting.name `
| where {$_.name -eq "SerialConnectionTimeout"} | select -ExpandProperty value
Понимаю, что мне сначала необходимо массив Setting'ов как-то десериализовать/сконвертировать в привычные объекты, изменить, сериализовать обратно и сохранить, но десериализовать у меняя тоже не получилось с ходу.
Как правильно отредактировать?