2010-07-08 25 views
9

¿Cómo puedo cambiar el valor del nodo <Test>Test</Test> a <Test>Power</Test>?¿Cómo puedo actualizar el valor de un nodo XML utilizando PowerShell?

Ejemplo:

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

Aquí está el script de PowerShell que uso actualmente:

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

Respuesta

21

No sé qué es exactamente lo que quiere lograr, pero el ejemplo que usted y la idea debe dar :

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

No necesita utilizar .NET para xpath queri es. Solo quédese con PowerShell (con Select-Xml).
También es común cargar archivos xml a través de Get-Content y convertirlo a [xml], que crea XmlDocument y carga el contenido del archivo.

+0

Funcionó como un encanto. ¿Puedes decirme qué? % lo hace en general? –

+3

Significa 'foreach-object'. Puede encontrarlo con 'Get-Alias ​​-Name%' – stej

+0

, también puede acceder al valor de prueba '$ xml.configuration.test' - Pretty slick (dado que no es una colección) pero luego puede usar' foreach ($ thing in $ xml.things) {$ thing.value} '. Estoy aquí porque necesito guardar mi archivo XML después de incrementar la versión. Y esto me ayudó. +1 – ppumkin

Cuestiones relacionadas