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

Powershell中如何避免字符串的&被转义为&amp

PowerShell字符串写入时&被二次转义的解决方案

问题根因

你遇到的&被自动转换为&的问题,是写入文件时使用了自带HTML/XML实体编码逻辑的操作(比如输出到HTML文档、写入XML节点、使用带编码转换的处理cmdlet),导致原始字符串里的&被识别为HTML实体标识符做了二次转义。

解决方案

方案1:使用纯文本写入cmdlet(最推荐)

直接使用原生纯文本写入命令,不会触发实体编码逻辑:

# 方式1:使用Out-File
$sample | Out-File -FilePath "你的文件路径" -Encoding UTF8

# 方式2:使用Set-Content
Set-Content -Path "你的文件路径" -Value $sample -Encoding UTF8

方案2:从根源避免特殊字符

定义连接字符串时直接使用PowerShell原生转义规则,不要使用HTML实体",从根源消除&字符:

# 单引号包裹字符串,内部双引号不需要额外转义
$sample = 'provider connection string="User Id=aa;Password=aa;Host=127.0.0.1;"'

# 或者双引号包裹时用反引号转义内部双引号
$sample = "provider connection string=`"User Id=aa;Password=aa;Host=127.0.0.1;`""

方案3:已被转义内容的还原

如果内容已经被转义,可以用HTML解码方法还原后再写入:

Add-Type -AssemblyName System.Web
# 解码已被转义的字符串
$decodedContent = [System.Web.HttpUtility]::HtmlDecode("已被转义的字符串内容")
# 写入文件
$decodedContent | Out-File -FilePath "你的文件路径" -Encoding UTF8

方案4:写入XML/HTML场景的特殊处理

如果必须要写入XML/HTML格式文件,可将连接字符串放入CDATA段,避免解析器转义特殊字符:

# XML写入示例
$xmlNode.InnerXml = "<![CDATA[$sample]]>"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:15:04