2016-08-17 68 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