2016-08-17 2 views
0

Also ich habe ein wenig mit meinem PowerShell-Skript und XML-Datei.Modify item innerXml mit 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> 

Und mein Powershell-Skript wie folgt aus::

aus einer Textbox
function modifyXmlItem ($selectedItem, $newValue) { 

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

Deshalb möchte ich ändern Wert des Vlan1 durch einen Wert Derzeit wird die XML-Datei wie folgt formatiert. Ich kann die Textbox bekommen Wert bilden, kann ich Wert erhalten ausgewählt (Vlan 1), aber ich konnte die „Vlan1“ ändern ...

Aber diese Funktion nicht funktioniert ... Ich habe viele versucht, Lösung aus dem Internet, aber keine Arbeits zur Verfügung gestellt ...

können Sie mir bitte helfen ... (Sorry für mein schlechtes Englisch ..)

+1

Was ist der erwartete Ausgabe gegeben die obige XML als Eingabe? Und zeigen Sie, was Sie bisher versucht haben, eine solche Ausgabe zu erreichen ... – har07

+0

Was ist der Typ von '$ selectedItem'? Was ist in $ Knoten nach der ersten Zeile? –

+0

Der Typ von '$ selectedItem' ist String. Et '$ node' enthält den ausgewählten Wert – Thibaultc

Antwort

0

Try this:

$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, es funktioniert! Vielen vielen Dank ! – Thibaultc

Verwandte Themen