2016-08-17 41 views
0

所以我对我的PowerShell脚本和XML文件有一点了解。 目前XML文件格式化这样的:使用powershell修改item innerXml

<?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的” ......

但这种功能不起作用...... 我已经尝试了许多从网络,但没有工作提供解决方案...

你可以帮我吗? (对不起,我的英文不好..)

+1

什么是预期给出上面的XML作为输入的输出?并显示你到目前为止尝试实现这样的输出... – har07

+0

'$ selectedItem'的类型是什么?第一行之后的'$ node'是什么? –

+0

'$ selectedItem'的类型是String。 Et'$ node'包含所选的值 – Thibaultc

回答

0

试试这个:

$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') 
+0

Genial,It Works!非常感谢 ! – Thibaultc