You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell移除并更新XML节点:替换嵌套节点的defaultProxy

PowerShell替换XML中的嵌套defaultProxy节点

操作步骤及代码示例

假设你要修改本地配置文件(如app.config或web.config),可按以下步骤操作:

  1. 加载XML文件
    将目标XML文件加载到PowerShell的XmlDocument对象中:

    $xmlPath = "C:\path\to\your\config.file"
    $xml = New-Object System.Xml.XmlDocument
    $xml.Load($xmlPath)
    
  2. 定位并删除原有defaultProxy节点
    通过XPath找到<system.net>下的<defaultProxy>节点并移除:

    $systemNetNode = $xml.SelectSingleNode("//system.net")
    $oldProxyNode = $systemNetNode.SelectSingleNode("./defaultProxy")
    if ($oldProxyNode) {
        $systemNetNode.RemoveChild($oldProxyNode) | Out-Null
    }
    
  3. 构建新的嵌套defaultProxy节点
    手动创建包含子节点的新<defaultProxy>节点:

    # 创建根defaultProxy节点
    $newProxyNode = $xml.CreateElement("defaultProxy")
    
    # 创建<proxy>子节点并设置属性
    $proxyChildNode = $xml.CreateElement("proxy")
    $proxyChildNode.SetAttribute("usesystemdefault", "True")
    $proxyChildNode.SetAttribute("proxyaddress", "http://xxxxx")
    $proxyChildNode.SetAttribute("bypassonlocal", "True")
    $newProxyNode.AppendChild($proxyChildNode) | Out-Null
    
    # 创建<bypasslist>子节点及内部的<add>节点
    $bypassListNode = $xml.CreateElement("bypasslist")
    $addNode = $xml.CreateElement("add")
    $addNode.SetAttribute("address", "yyyyyy")
    $bypassListNode.AppendChild($addNode) | Out-Null
    $newProxyNode.AppendChild($bypassListNode) | Out-Null
    
  4. 将新节点添加到system.net下并保存
    把构建好的嵌套节点加入到<system.net>中,然后保存XML文件:

    $systemNetNode.AppendChild($newProxyNode) | Out-Null
    $xml.Save($xmlPath)
    

直接处理XML字符串的情况

如果你的XML是字符串形式而非文件,可改用以下方式加载和输出:

$xmlString = @"
  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>
"@

$xml = New-Object System.Xml.XmlDocument
$xml.LoadXml($xmlString)

# 重复上述步骤2-4的节点操作...

# 输出修改后的XML字符串
$xml.OuterXml

内容的提问来源于stack exchange,提问作者O'Neil Tomlinson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 10:03:18