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

使用StringWriter输出XML时变量被展开的问题求助

解决PowerShell中XML内容变量被意外展开的问题

问题根源

你遇到的不是[System.IO.StringWriter]的问题,而是PowerShell的字符串插值行为:当XML内容用双引号包裹或经过PowerShell的字符串解析环节时,$key.Value会被当作PowerShell变量尝试展开,导致输出异常。

解决方案

  • 用单引号包裹XML内容:单引号字符串不会触发PowerShell的变量解析,直接保留原始内容:
    $xmlContent = '<Pattern>$key.Value</Pattern>'
    
  • 使用单引号Here-String:对于多行XML,用@' ... '@定义,确保完全保留原始格式:
    $xmlContent = @'
    <Root>
      <Pattern>$key.Value</Pattern>
    </Root>
    '@
    
  • 直接读取原始XML文件:如果XML来自外部文件,用Get-Content -Raw读取,跳过PowerShell的字符串插值:
    $xmlContent = Get-Content -Raw -Path "your-xml-file.xml"
    
  • 修正函数的参数传递:确保传递给Write-PxXmlToConsole的是未被插值的原始字符串,函数内部直接写入StringWriter即可,无需额外设置:
    function Write-PxXmlToConsole {
        param([string]$XmlContent)
        $sw = [System.IO.StringWriter]::new()
        try {
            $sw.Write($XmlContent)
            Write-Host $sw.ToString()
        }
        finally {
            $sw.Dispose()
        }
    }
    

内容的提问来源于stack exchange,提问作者Gordon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:06:06