使用PowerShell将两个不同CSV文件中的信息合并到一个新文件中

时间:2016-08-04 13:21:18

标签: powershell

我是powershell的新手。我有两个不同的CSV文件,我希望使用每个文件中的主键字段合并为一个。 一个例子是:

CSV 1:

ID - TB - Number
01:01 - SB - 24
12:04 - DV - 63

CSV 2:

ID - UR1 - UR2
01:01 - soft - install soft
12:04 - soft - uninstall soft

所需输出

ID - TB - Number - UR1 - UR2
01:01 - SB - 24 - soft - install soft
12:04 - DV - 63 - soft - uninstall soft

1 个答案:

答案 0 :(得分:0)

确实,CSV没有正确格式化,做了一个丑陋的修复(前两行),之后你可以按照下面这样做

$csv1 = (gc C:\tmp\csv1.ps1 -raw) -replace ' - ',',' | ConvertFrom-Csv
$csv2 = (gc C:\tmp\csv2.ps1 -raw) -replace ' - ',',' | ConvertFrom-Csv

$columns1 = ($csv1 | Get-Member -MemberType NoteProperty).Name

$csv1 | % { 
    $row1 = $_
    $row2 = $csv2 | ? {$_.ID -eq $row1.ID}
    $row2 | Get-Member -MemberType NoteProperty | % {
        if($_.Name -notin $columns1) { 
            $row1 | Add-Member $_.Name $row2.$($_.Name)
        }
    }    
}

$csv1