2010-07-08 10 views
9

Wie kann ich den Wert des Knotens <Test>Test</Test> zu <Test>Power</Test> ändern?Wie kann ich den Wert für einen XML-Knoten mithilfe von PowerShell aktualisieren?

Beispiel:

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
     <add key="DeploymentDate" value="test" /> 
     <add key="DateOfInitialization" value="Vinoj" /> 
    </appSettings> 
    <Test>Test</Test> 
</configuration> 

Hier ist der Powershell-Skript, das ich zur Zeit verwenden:

$configuration = "app.config" 
[xml]$xml = New-Object XML 
$xml.Load($configuration) 
$xml.selectnodes("/configuration/Test") = {"UST"} 
$xml.Save($configuration) 

Antwort

21

Ich weiß nicht, was genau Sie erreichen wollen, aber das Beispiel sollten Ihnen und Idee geben :

$file = 'c:\temp\aa\ServerService.exe.config' 
$x = [xml] (Get-Content $file) 
Select-Xml -xml $x -XPath //root/level | 
    % { $_.Node.'#text' = 'test' 
     $_.Node.SomeAttribute = 'value' 
     } 
$x.Save($file) 

Sie müssen .NET für xpath queri nicht verwenden es. Bleiben Sie einfach bei PowerShell (mit Select-Xml).
Es ist auch üblich, XML-Datei über Get-Content zu laden und es in [xml] zu werfen, die XmlDocument erstellt und den Dateiinhalt lädt.

+0

Arbeitete wie ein Charme. Kannst du mir bitte was sagen? % macht im Allgemeinen? –

+3

Es bedeutet 'foreach-object'. Sie können es mit 'Get-Alias ​​-Name%' – stej

+0

finden Sie können auch auf den Test-Wert '$ xml.configuration.test' zugreifen - Pretty Slick (da es keine Sammlung ist), aber dann können Sie' foreach ($ thing in $ xml.things) {$ sing.value} '. Ich bin hier, weil ich meine XML-Datei nach dem Inkrementieren der Version speichern muss. Und das hat mir geholfen. +1 – ppumkin

Verwandte Themen