现在,我正在尝试编写一个PS脚本,在一堆机器上为XML添加一个部分,以添加设置以解决我们在某个应用程序中遇到的问题
XML文件如下所示
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<add Name="testdata"/>
</configSections>
<connectionStrings>
<add Name="testdata"/>
</connectionStrings>
<ProvidersConfiguration>
<Providers>
<add Name="testdata"/>
</Providers>
</ProvidersConfiguration>
<FacadeSettings>
<Providers>
<add Name="testdata"/>
</Providers>
</FacadeSettings>
</configuration>
现在,我一直在谷歌搜索并搜索了几个小时,而且还有一些我没有得到的东西。因为我可以在我的脚本中加载文件,导航所有设置,甚至修改现有值,但这不是我需要做的。
我需要添加这样的部分
<NewSettings>
<add Name="setting"/>
</NewSettings>
以便我的配置文件看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<add Name="testdata"/>
</configSections>
<connectionStrings>
<add Name="testdata"/>
</connectionStrings>
<ProvidersConfiguration>
<Providers>
<add Name="testdata"/>
</Providers>
</ProvidersConfiguration>
<FacadeSettings>
<Providers>
<add Name="testdata"/>
</Providers>
</FacadeSettings>
<NewSettings>
<add Name="setting"/>
</NewSettings>
</configuration>
这是NewSettings部分,我无法弄清楚,我确信当我绕过它时,我会去“OH ......”,但是现在我正在敲我的头在墙上并可以使用一些帮助
答案 0 :(得分:7)
试试这个:
# Create xml doc - assumes your xml is file E:\Scratch\test.xml
# If it's already in a variable, use $xml = [xml]$myVariable
$xml = [xml](Get-Content E:\Scratch\test.xml)
# Create new element for <NewSettings>
$newSettings = $xml.CreateElement("NewSettings")
# Create new element for <add>
$add = $xml.CreateElement("add")
# Create attribute "Name", and set its value
$settingsAttribute = $xml.CreateAttribute("Name")
$settingsAttribute.Value = "setting"
# Add attribute to <add>
$add.Attributes.Append($settingsAttribute)
# Add <add> to <NewSettings>
$newSettings.AppendChild($add)
# Add <NewSettings> to <configuration>
$xml.configuration.AppendChild($newSettings)
# Save to file
$xml.Save("E:\Scratch\new.xml")