2016-08-17 2 views
0

Так что у меня немного с моим скриптом PowerShell и XML-файлом. В настоящее время файл XML отформатированный как это:изменить элемент innerXml с powershell

<?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' - это строка. 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