【问题标题】:Editing XML with powershell使用 powershell 编辑 XML
【发布时间】:2013-12-18 07:56:51
【问题描述】:

好吧,我感觉自己像个大白痴。为了工作中的管理目的,我一直在使用 Powershell 一段时间。也就是说,脚本不是我的强项。

现在,我正在尝试编写一个 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 部分,我确信当我把头绕在它周围时,我会说“哦……”,但现在我正把头撞在墙上并且可以使用一些帮助

【问题讨论】:

标签: xml powershell


【解决方案1】:

试试这个:

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

【讨论】:

  • 啊....所以我想我想倒着做。如果我理解这一点,我们将自己创建 XML 表,然后将其附加到现有的 XML 中,我试图从一开始就添加到现有的 XML 中,尝试向上(向下?)树。
  • 好的,经过一些编辑后尝试了它,使其更适合我想要的内容并且它正在工作。从尝试创建元素开始,我走在正确的道路上,但并没有完全掌握附加它们的部分。我知道我错过了一些东西,现在它是有道理的。非常感谢凯文
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 2014-09-12
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2011-06-28
相关资源
最近更新 更多