如何使用Powershell从XML文件中删除特定标记?

时间:2015-03-26 12:31:18

标签: xml powershell iis powershell-ise cmdlet

从xml片段下面我只想删除&#34; ConnectionString&#34;标签来自 <appSettings>父标记:

     <configuration>  
        <appSettings>
            <add key="ConnectionString" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
            <add key="ConnectionString1" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
            <add key="ConnectionString2" value=" Data Source=192.168.1.19;Network Library=DBMSSOCN;Initial Catalog=Demo;Persist Security Info=True; User ID=sa;Password=powershell;Application Name=web;Connect Timeout=200; pooling='true'; Max Pool Size=200;"/>
          </appSettings>
    </configuration>

请使用PowerShell告诉我如何执行此操作?

2 个答案:

答案 0 :(得分:2)

试试这个:

# Set file path
$File = '.\config.xml'

# Get file contents as XML
[xml]$xml = Get-Content $File

# Find node with key="ConnectionString"
$Remove = $xml.appSettings.configuration.appSettings.add |
                Where-Object {$_.Key -eq 'ConnectionString'}

# Remove this node from it's parent
$xml.appSettings.configuration.appSettings.RemoveChild($Remove) | Out-Null

# Save file
$xml.Save($File)

答案 1 :(得分:1)

删除由节点的父节点完成。首先找到所需的节点,然后通过ParentNode属性获取其父节点。然后通过父级,通过RemoveChild()删除子节点。像这样,

[xml]$doc = cat 'path/to/xml'
$nodeToRemove = $doc.SelectSingleNode("//add[@key='ConnectionString']")
$parent = $nodeToRemove.ParentNode
$parent.RemoveChild($nodeToRemove)
$doc.Save([console]::out)