首页 > 解决方案 > XML 配置比较以检测任何新密钥并在现有配置中添加密钥

问题描述

我有两个用于 c# 应用程序的配置文件 (XML):

在部署新版本时,我遇到了这个问题:如果NewConfigFile在新版本中 (xml) 中引入了任何新密钥,那么我手动将其NewConfigFile与进行比较CurrentConfigFile以查看是否引入了任何新密钥。如果有任何新密钥,那么我将其CurrentConfigFile手动插入。

我想编写一个可以为我完成上述任务的 PowerShell 脚本。我是 PowerShell 的新手,我在互联网上做了很多搜索,但没有运气。请在这里帮助我。

标签: xmlpowershelldeploymentconfig

解决方案


查看Get-ContentCompare-Objectcmdlet。-PassThru参数 forCompare-Object将使您能够输出两个文件之间的差异。

Compare-Object -ReferenceObject (Get-Content -Path "current-config-file") -DifferenceObject (Get-Content -Path "new-config-file") -PassThru | Out-File "diff-file"

然后,您可以键入将current-config-file diff-file的内容强制转换为,[xml]以便您可以使用一些有用的方法和属性。

$currentXML = [xml](Get-Content -Path "current-config-file")
$diffXml = [xml](Get-Content -Path "diff-file")

假设$diffXml拥有有效的 XML(如下所示),您应该能够使用InsertAfteron 方法$currentXML将新的 XML 数据插入您想要的位置。检查下面的将新元素插入 XML 文件链接以获取有关如何执行此操作的更多详细信息。

...
    <child>
        <subchild>...</subchild>
    </child>
...

Get-Content
Compare-Object
将新元素插入 XML 文件
XmlDocument 类


推荐阅读