PowerShell读取XML配置文件最简方式是用[xml]类型加速器加载:$config=[xml](Get-Content -Path "app.config" -Raw),需加-Raw避免换行干扰;支持命名空间查询、异常处理及修改保存。

PowerShell 读取 XML 配置文件非常简单,核心是用 [xml] 类型加速器把 XML 内容转为可导航的对象,而不是手动解析字符串。
用 [xml] 加载本地 XML 文件
这是最常用的方式:直接将 XML 文件内容强制转换为 XML 对象,之后就能用点号(.)访问节点和属性。
-
推荐写法:
$config = [xml](Get-Content -Path "app.config" -Raw) - 注意加 -Raw 参数:避免 Get-Content 按行读取导致换行符干扰 XML 解析
- 加载后可直接访问,例如:
$config.configuration.appSettings.add | Where-Object { $_.key -eq "LogLevel" } | Select-Object -ExpandProperty value
读取带命名空间的 XML(如 .NET config)
很多配置文件(如 web.config、app.config)使用默认或自定义命名空间,直接点属性会失败。
- 先查看命名空间:
$config.DocumentElement.NamespaceURI - 用
SelectSingleNode或SelectNodes配合XmlNamespaceManager - 示例(查 appSettings):
$ns = New-Object System.Xml.XmlNamespaceManager($config.NameTable)
$ns.AddNamespace("cfg", "http://schemas.microsoft.com/.NetConfiguration/v2.0")
$node = $config.SelectSingleNode("//cfg:appSettings", $ns)
安全读取 XML:避免解析失败崩溃
XML 格式错误或路径不存在会导致脚本中断,建议加异常处理。
- 用 try/catch 包裹加载过程:
try { $config = [xml](Get-Content "config.xml" -Raw) } catch { Write-Error "XML 加载失败:$($_.Exception.Message)"; return }- 检查根节点是否存在再操作:
if ($config.configuration) { ... }
修改并保存 XML 配置
读取后可直接改属性或子节点,改完调用 Save() 方法写回文件。
- 改值:
$config.configuration.appSettings.add[0].value = "Debug" - 新增节点需用
CreateElement和AppendChild - 保存:
$config.Save("config.xml")(注意权限和编码,默认 UTF-8)










