PowerShell转换XML到CSV时遇InputObject参数绑定为空错误求助
问题原因与解决方案
错误原因
原脚本第2行用了$inputFile.website.ChildNodes,但你的XML根节点是<Document>,根本没有<website>节点,所以$inputFile.website是null,导致Export-Csv的InputObject参数拿不到有效输入,直接报错。另外,原脚本直接导出节点的方式,也没法把XML里Row的属性和子Element的键值对转换成你要的CSV格式。
修正后的PowerShell脚本
# 读取并解析XML文件 [XML]$inputFile = Get-Content -Path 'C:\Users\Desktop\Temp - 01D\XML_Audit.xml' # 把XML节点转换成CSV需要的结构化数据 $csvData = $inputFile.Document.Row | ForEach-Object { # 先收集Row自身的属性 $rowData = @{} $_.Attributes | ForEach-Object { $rowData[$_.Name] = $_.Value } # 再收集每个Element的键值对 $_.Element | ForEach-Object { $rowData[$_.ColumnName] = $_.ColumnValue } # 转成PowerShell对象 [PSCustomObject]$rowData } # 导出为指定格式的CSV $csvData | Export-Csv "C:\Users\Desktop\Temp - 01D\XML_Audit.csv" -NoTypeInformation -Delimiter:"|" -Encoding:UTF8 # 查看导出结果 Get-Content -Path 'C:\Users\Desktop\Temp - 01D\XML_Audit.csv'
脚本说明
- 修正节点路径:用
$inputFile.Document.Row定位到XML里的实际数据行,替换了错误的$inputFile.website - 结构化转换:把每个Row的属性(比如OptionId、AuditDateTime)和子Element的字段(比如ProviderId、ProviderName)合并成统一对象,确保CSV列包含所有需要的内容
- 保留你要求的导出参数:用
|做分隔符、UTF8编码、不添加类型信息
内容的提问来源于stack exchange,提问作者europtaifun
相关产品推荐
相关产品推荐

