PowerShell创建XML最常用可靠方式是[xml]类型加速器配字符串或XmlDocument编程:字符串法适合简单固定结构,XmlDocument法适合复杂动态场景,ConvertTo-Xml仅限PS内部序列化。
PowerShell 创建 XML 文档最常用、最可靠的方式是使用 [xml] 类型加速器配合字符串拼接或 XmlDocument 对象编程构建。直接用字符串生成简单 XML 快速有效,而用 XmlDocument 可以动态添加节点、设置属性、验证结构,适合复杂场景。
适用于结构固定、内容简单的 XML,比如配置片段或测试数据。PowerShell 会自动解析字符串为可操作的 XML 对象:
@”…“@)保持格式清晰,避免引号转义问题[xml],即可访问 .DocumentElement、.FirstChild 等 DOM 属性)非必需,但加上更规范示例:
$xmlStr = @""@ prod_db
$xml = [xml]$xmlStr
$xml.config.server.name # 输出 web01
$xml.config.database.'#text' # 输出 prod_db
适合需循环生成节点、条件插入、设置命名空间或验证格式的场景。比字符串方式更健壮,不易出错:
XmlDocument 实例,再用 CreateElement、CreateAttribute 等方法逐层构造AppendChild 或 PrependChild 控制节点顺序,SetAttributeNode 添加属性$doc.Save("config.xml")
示例(构建带属性和子节点的配置):
$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 # 查看生成结果
这个命令不是生成通用 XML,而是将 PowerShell 对象(如哈希表、自定义对象)转为 PowerShell 专用 XML 格式,含 Objs、S、Obj 等标签,**不适用于与外部系统交互**:
ConvertFrom-Xml)示例(不推荐用于标准 XML 场景):
$data = @{Name="AppServer"; Rol
e="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" }
[System.Text.UTF8Encoding]::new($false) 配合 Save() 方法