обновить дубликат именованного раздела XML с помощью Powershell

Используя Powershell, я хотел бы обновить статус совместимости Outlook на True

<default>
  <application>Excel.exe</application>
  <compatible>True</compatible>

  <application>Outlook.exe</application>
  <compatible>False</compatible>

  <application>Word.exe</application>
  <compatible>False</compatible>
</default>

В этом посте показано, как редактировать документ, если существует только один экземпляр default.application, но файл, с которым я работаю, имеет несколько разделов с именами приложение на этом уровне .

$doc = [xml](Get-Content./test.xml)

Результатом $doc.default.compatibleявляется
Правда
Ложь
False

Как изменить только среднее значение (outlook.exe)на True с помощью Powershell?

0
задан 12 October 2021 в 01:07
1 ответ

. Поскольку вы хотите изменить совместимый узел после узла Outlook, я реализовал проверку того, что это предыдущее значение, используя метод PreviousSibling перед изменением значения на True.

Обновлен код:

$docs = [xml](Get-Content./test.xml)

$doc = $docs.SelectNodes('/default/compatible') 

foreach ($d in $doc){
    if($d.PreviousSibling.OuterXml -eq "<application>Outlook.exe</application>"){
        $d.'#text' = "True"
    }
}

$docs.Save($PSScriptRoot + "\test.xml")
0
ответ дан 12 October 2021 в 09:18

Теги

Похожие вопросы