如何基于XML与CSV修改PowerShell结果行为,修正ComputerName节点格式错误
问题解决:PowerShell生成XML时多服务器名格式错误问题
问题说明
运行脚本基于主XML模板批量生成XML文件时,计算机名称字段输出不符合预期:
- 预期格式:每个服务器名独占一个
<ComputerName>标签
<ComputerName>Server1</ComputerName>
- 错误输出:多个服务器名被逗号拼接后放在同一个
<ComputerName>标签内
<ComputerName>Server1, server2, server3</ComputerName>
现有问题代码段
已定位问题出在唯一ServerName分组的处理逻辑中,负责拼接计算机名称的代码:
$template -replace '#computername#',"<ComputerName>$(($_.Group.ServerName) -join ',')</ComputerName>" -replace
修复方案
将上述代码替换为以下内容即可:
$template -replace '#computername#', $(($_.Group.ServerName | ForEach-Object { "<ComputerName>$_</ComputerName>" }) -join "`n") -replace
改动说明
- 原有逻辑是把同IGPID下的所有服务器名用逗号拼接后,外层套统一的
<ComputerName>标签,导致格式错误 - 修复后逻辑:遍历同IGPID下的每一个服务器名,为每个服务器名单独生成
<ComputerName>标签,标签之间用换行分隔,完全符合预期格式 - 该修改仅作用于
uniq.csv对应的处理分支,不会影响脚本前半部分dup.csv的处理逻辑
内容的提问来源于stack exchange,提问作者Vijay khurava
相关产品推荐
相关产品推荐

