【问题标题】:modify item innerXml with powershell使用 powershell 修改项目 innerXml
【发布时间】:2016-12-23 19:13:00
【问题描述】:

所以我有一点我的 PowerShell 脚本和 XML 文件。 目前 XML 文件的格式如下:

<?xml version="1.0" encoding="utf-8"?>
<Settings> 
  <ARP>
    <ConfigVLAN>
      <Vlan>Vlan1</Vlan>
      <Vlan>Vlan2</Vlan>
      <Vlan>Vlan3</Vlan>
      <Vlan>Vlan4$</Vlan>
    </ConfigVLAN>
  </ARP>
</Settings>

我的 Powershell 脚本是这样的:

function modifyXmlItem ($selectedItem, $newValue) {

    $node = $xml.Settings.ARP.configVLAN | where {$_ -eq $selectedItem}
    $node = $newValue
    $xml.Save($path)
}

所以我想通过文本框中的值更改 Vlan1 的值。 我可以从文本框中获取值,我可以选择值(Vlan 1),但我未能更改“Vlan1”...

但是这个功能不起作用... 我尝试了许多从网络上提供的解决方案,但都没有工作......

你能帮帮我吗... (对不起我的英语不好..)

【问题讨论】:

  • 将上面的 XML 作为输入,预期的输出是什么?并展示到目前为止您为实现此类输出所做的尝试...
  • $selectedItem的类型是什么?第一行之后的$node 是什么?
  • $selectedItem 的类型是字符串。 Et $node 包含选择的值

标签: xml powershell powershell-3.0


【解决方案1】:

试试这个:

$xml = [xml]'<?xml version="1.0" encoding="utf-8"?>
<Settings> 
  <ARP>
    <ConfigVLAN>
      <Vlan>Vlan1</Vlan>
      <Vlan>Vlan2</Vlan>
      <Vlan>Vlan3</Vlan>
      <Vlan>Vlan4$</Vlan>
    </ConfigVLAN>
  </ARP>
</Settings>'
$selectedItem = 'Vlan4$'

$xml.Settings.ARP.ConfigVLAN.SelectSingleNode("Vlan[text()=""$($selectedItem)""]").InnerText = "NewValue"
$xml.Save('d:\temp\out.xml')

【讨论】:

  • 亲切,有效!非常感谢!
猜你喜欢
  • 2011-12-15
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多