在 powershell 中更改后保存 XML 文件

时间:2021-01-19 22:13:58

标签: xml powershell

我已经解析了 XML 文件并且我有这些字符串。因此,我需要用新的 GUID“{BBB7C1EB-B0B0-40F3-B1D0-1F28111C5806}”替换 GUID“{87440A4C-1FE4-412E-80C3-74E4F97A31B4}”。这些更改后如何保存 XML?

我解析的字符串:

<块引用>
C:\ProgramData\Program {87440A4C-1FE4-412E-80C3-74E4F97A31B4}\Extensions\Signal Integrity  
C:\ProgramData\Program {87440A4C-1FE4-412E-80C3-74E4F97A31B4}\Extensions\Vcs_SVN_Unicode 
C:\ProgramData\Program {87440A4C-1FE4-412E-80C3-74E4F97A31B4}\Extensions\Mixed Simulation 
C:\ProgramData\Program {87440A4C-1FE4-412E-80C3-74E4F97A31B4}\Extensions\SIMetrix
$fileName = "C:\temp\Extensions\ExtensionsRegistry.xml"
$xml = [System.Xml.XmlDocument](Get-Content $fileName)

$Xml.Extensions.Item.Path.ForEach{ $_ -replace 'Program  {87440A4C-1FE4-412E-80C3-74E4F97A31B4}', "Program {BBB7C1EB-B0B0-40F3-B1D0-1F28111C5806}"}

$Xml.Save($fileName)

2 个答案:

答案 0 :(得分:2)

  • video.currentTime 运算符不会就地修改其 LHS,它返回一个修改后的副本 LHS。

  • 如果 -replace 元素只有 text 内容,则使用 PowerShell's adaptation of the XML via dot notation 仅返回该文本本身,而不是元素对象,因此您无法修改方式。

因此,您必须以不同的方式枚举Path元素并分配
的结果 Path 操作返回到它们的 -replace 属性:

.InnerText

答案 1 :(得分:0)

通过 Set-Content 将输出通过管道传输到文件。

相关问题