XML и XPath чувствительны к регистру, поэтому Select-XML $xmlopen -Xpath "//Property Name"
не работает. Во-первых, это должно быть //property
, а часть атрибута тоже неверна.
Используйте правильный регистр и атрибут доступа с синтаксисом [@attribute='value']
, например,
Select-Xml $x -Xpath "//property[@name='connection.username']"
Node Path Pattern
---- ---- -------
property InputStream //property[@name='connection.username']
Чтобы изменить, выберите соответствующий узел и назначьте новое значение его элементу Node.#text
. Обратите внимание на кавычки вокруг '#text'
, так как #
является символом комментария в Powershell. Пропуск проверки ошибок, вот так
(Select-Xml $x -Xpath "//property[@name='connection.username']").Node.'#text' = 'user_auth_paris'
$x.save([console]::out)
<?xml version="1.0" encoding="IBM437"?>
<InitFile version="1.0">
<session-factory>
<property name="connection.username">user_auth_paris</property>
</session-factory>
</InitFile>