使用 Powershell 更新 XML 重复命名部分

使用 Powershell 更新 XML 重复命名部分

使用 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”实例,但是我正在处理的文件在该级别有多个名为 application 的部分,则如何编辑文档

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

输出 $doc.default.compatible
True
False
False

如何使用 Powershell 将中间值(outlook.exe)修改为 True?

答案1

由于您想在 Outlook 节点之后更改兼容节点,因此我实施了在将值更改为 True 之前使用 PreviousSibling 方法检查它是否为前一个值。

更新的代码:

$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")

相关内容