You need to enable JavaScript to run this app. PowerShell用SetAttribute修改XML属性时意外带入回车换行字符问题
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell用SetAttribute修改XML属性时意外带入回车换行字符问题

问题产生的原因

脚本里$foldername = Out-String -InputObject $buildrev这行代码是异常转义内容的来源。
Out-String将输入对象转为字符串时,默认会在结果末尾自动追加匹配当前操作系统的行终止符(Windows环境下就是回车+换行两个控制字符)。这类控制字符不允许直接出现在XML属性值内,当XML对象执行Save操作序列化文件时,会把这些控制字符自动转义为
的实体编码,最终就生成了你看到的带多余转义序列的属性值。

修正方案

原有XML操作的核心逻辑是正确的,只需要去掉引入冗余字符的转换步骤,同时增加对输入值的冗余字符清理即可:

  • 移除不必要的Out-String调用,避免主动引入末尾换行
  • 对传入的版本参数调用.Trim()方法,剔除首尾所有空白、控制字符,确保写入的是纯目标文本
  • 保持原有XML加载、属性设置、文件保存的流程不变

修正后的完整脚本:

param($configfilepath, $buildrev)
# 直接取参数值,裁剪首尾多余的空白、换行控制字符
[string]$foldername = $buildrev.Trim()
$error.Clear()
$xml = New-Object xml
$xml.Load($configfilepath)
$xml.configuration.appSettings.add.SetAttribute('value', $foldername)
$xml.Save($configfilepath)
实际效果

执行修正后的脚本,生成的XML配置文件中,appSettings节点下add元素的value属性会直接写入你传入的纯文本内容(例如示例中的025),不会附带任何
格式的回车换行转义内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 12:24:04