PowerShell创建XML最常用可靠方式是[xml]类型加速器配字符串或XmlDocument编程:字符串法适合简单固定结构,XmlDocument法适合复杂动态场景,ConvertTo-Xml仅限PS内部序列化。

PowerShell 创建 XML 文档最常用、最可靠的方式是使用 [xml] 类型加速器配合字符串拼接或 XmlDocument 对象编程构建。直接用字符串生成简单 XML 快速有效,而用 XmlDocument 可以动态添加节点、设置属性、验证结构,适合复杂场景。
用字符串 + [xml] 类型加速器快速创建
适用于结构固定、内容简单的 XML,比如配置片段或测试数据。PowerShell 会自动解析字符串为可操作的 XML 对象:
- 用 Here-String(
@”…“@)保持格式清晰,避免引号转义问题 - 声明变量后强制转换为
[xml],即可访问.DocumentElement、.FirstChild等 DOM 属性 - 注意:XML 声明(如
)非必需,但加上更规范
示例:
$xmlStr = @""@ prod_db
$xml = [xml]$xmlStr
$xml.config.server.name # 输出 web01
$xml.config.database.'#text' # 输出 prod_db
用 XmlDocument 对象动态构建(推荐用于复杂逻辑)
适合需循环生成节点、条件插入、设置命名空间或验证格式的场景。比字符串方式更健壮,不易出错:
- 先创建空
XmlDocument实例,再用CreateElement、CreateAttribute等方法逐层构造 - 用
AppendChild或PrependChild控制节点顺序,SetAttributeNode添加属性 - 支持保存到文件:
$doc.Save("config.xml")
示例(构建带属性和子节点的配置):
云模块_YunMOK网站管理系统采用PHP+MYSQL为编程语言,搭载自主研发的模块化引擎驱动技术,实现可视化拖拽无技术创建并管理网站!如你所想,无限可能,支持创建任何网站:企业、商城、O2O、门户、论坛、人才等一块儿搞定!永久免费授权,包括商业用途; 默认内置三套免费模板。PC网站+手机网站+适配微信+文章管理+产品管理+SEO优化+组件扩展+NEW Login界面.....目测已经遥遥领先..
$doc = New-Object System.Xml.XmlDocument
$root = $doc.CreateElement("settings")
$doc.AppendChild($root) | Out-Null
$item = $doc.CreateElement("item")
$attr = $doc.CreateAttribute("id")
$attr.Value = "101"
$item.SetAttributeNode($attr)
$item.InnerText = "Backup Enabled"
$root.AppendChild($item) | Out-Null
$doc.InnerXml # 查看生成结果
用 ConvertTo-Xml(仅限 PowerShell 原生对象序列化)
这个命令不是生成通用 XML,而是将 PowerShell 对象(如哈希表、自定义对象)转为 PowerShell 专用 XML 格式,含 Objs、S、Obj 等标签,**不适用于与外部系统交互**:
- 输出结构固定,不可控,且包含类型信息和命名空间
- 仅适合 PowerShell 进程间临时传递数据(配合
ConvertFrom-Xml) - 不要用它生成配置文件或 API 请求体
示例(不推荐用于标准 XML 场景):
$data = @{Name="AppServer"; Role="Web"; Status="Online"}
$data | ConvertTo-Xml -NoTypeInformation保存和验证小技巧
生成 XML 后建议验证格式是否合法,再保存:
- 用
$xml.Save("out.xml")直接保存 XmlDocument;用Out-File -Encoding UTF8保存字符串(注意 BOM 问题) - 检查是否生成成功:
if ($xml.DocumentElement) { "Valid" } else { "Parse failed" } - 若需 UTF-8 无 BOM,用
[System.Text.UTF8Encoding]::new($false)配合Save()方法









