2010-07-08 5 views
9

노드 값을 변경하는 방법 <Test>Test</Test><Test>Power</Test>으로 변경 하시겠습니까?PowerShell을 사용하여 XML 노드의 값을 업데이트하려면 어떻게해야합니까?

:

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

여기에 내가 현재 사용하는 PowerShell 스크립트입니다 :

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

답변

21

난 당신이 달성하고자 정확히 모르겠지만 예를 들어 당신과 아이디어를 제공해야합니다 :

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

xpath 쿼리에는 .NET을 사용할 필요가 없습니다. es. PowerShell (Select-Xml)을 사용하십시오.
Get-Content을 통해 xml 파일을로드하고 [xml]으로 전송하여 XmlDocument을 생성하고 파일 내용을로드하는 것이 일반적입니다.

+0

매력처럼 작동했습니다. 너 나 한테 말해 줄 수 있니? 일반적으로 %는 무엇입니까? –

+3

'foreach-object'를 의미합니다. 'Get-Alias ​​-Name %' – stej

+0

으로 찾을 수 있습니다. 테스트 값'$ xml.configuration.test'에 접근 할 수 있습니다 - 꽤 매끄러운 데 (콜렉션이 아니라)'foreach ($ thing in $ xml.things) {$ thing.value}'. 나는 여기 버전을 증가시킨 후에 XML 파일을 저장해야하기 때문에 여기에있다. 그리고 이것은 나를 도왔습니다. +1 – ppumkin

관련 문제