使用PowerShell将批量xml转换为单独的csv

时间:2017-10-30 23:02:46

标签: xml powershell csv

我有一个Power Shell脚本,用于查询xml文档并将结果输出到csv文件。该脚本有效,但我需要将其应用于文件夹中的多个xml文件,然后将结果作为单独的csv输出,以用于具有相同XML名称的每个XML。如何修改此脚本来执行此操作?

PROCESS 
{ 
$xml = [xml](Get-Content .\sample.xml) #Sample XML

$xml.log.event | Select-object @(
@{l="times";e={$_.time}},
@{l="type";e={$_.type}},
@{l="user";e={$_.user}},
@{l="place";e={$_.place}},
@{l="message";e={$_.message}}) |
Export-Csv test.csv -NoTypeInformation
}

1 个答案:

答案 0 :(得分:2)

假设一个目录:

$ToProcess = Get-ChildItem -Path 'C:\Temp' -Filter '*.xml'

ForEach ($File in $ToProcess)
{
    [Xml]$Xml = Get-Content -Path $File.FullName

    $Xml.log.event | Select-Object -Property @(
        @{Name='Times';Expression={$_.Time}},
        @{Name='Type'; Expression={$_.Type}},
        @{Name='User'; Expression={$_.User}},
        @{Name='Place';Expression={$_.Place}},
        @{Name='Message';Expression={$_.Message}}
    ) | Export-Csv -Path "C:\Temp\$($File.BaseName).csv" -NoTypeInformation
}