2010-07-08 10 views
9

Come posso modificare il valore del nodo <Test>Test</Test> a <Test>Power</Test>?Come posso aggiornare il valore per un nodo XML usando PowerShell?

Esempio:

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

Ecco lo script PowerShell Attualmente uso:

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

risposta

21

Non so che cosa esattamente si vuole raggiungere, ma l'esempio dovrebbe darvi e l'idea :

$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) 

Non è necessario utilizzare .NET per xpath queri es. Basta stare con PowerShell (con Select-Xml).
È anche comune caricare il file xml tramite Get-Content e trasmetterlo a [xml] che crea XmlDocument e carica il contenuto del file.

+0

Ha funzionato come un fascino. Per favore, dimmi cosa? % fa in generale? –

+3

Significa 'foreach-object'. Puoi trovarlo con 'Get-Alias ​​-Name%' – stej

+0

puoi anche accedere al valore di test '$ xml.configuration.test' - Pretty slick (dato che non è una collezione) ma puoi usare' foreach ($ cosa in $ xml.things) {$ thing.value} '. Sono qui perché ho bisogno di salvare il mio file XML dopo l'incremento della versione. E questo mi ha aiutato. +1 – ppumkin

Problemi correlati