【发布时间】:2021-12-24 04:19:06
【问题描述】:
我正在尝试合并两个具有共同列名的 csv 文件,但一个有 22 行,另一个只有 16 行。
1st CSV 2nd CSV
Name Service_StatusA Name Service_StatusB
IEClient running IEClient Manual
IE Nomad running IE Nomad running
Data Usage running Print Spooler Manual
Print Spooler running Server running
Server running
我想把它合并到一个单独的 csv 中
Name Service_StatusA Service_StatusB
IEClient running Manual
IE Nomad running running
Data Usage running
Print Spooler running Manual
Server running running
$file1 = Import-Csv -Path .\PC1.csv
$file2 = Import-Csv -Path .\PC2.csv
$report = @()
foreach ($line in $file1)
{
$match = $file2 | Where-Object {$_.Name -eq $line.Name}
if ($match)
{
$row = "" | Select-Object 'Name','Service_StatusA','Service_StatusA',
$row.Name = $line.Name
$row.'Service_StatusA' = $line.'Service_StatusA'
$row.'Service_StatusB' = $match.'Service_StatusB'
$report += $row
}
}
$report | export-csv .\mergetemp.csv -notype -force
如何在合并前比较行值
【问题讨论】:
-
有什么问题?添加仅在一个文件中的服务?
-
使用这个
Join-Object script/Join-Object Module(另见:In Powershell, what's the best way to join two tables into one?):Import-Csv .\PC1.csv |LeftJoin (Import-Csv .\PC2.csv) -on Name |Export-Csv .\mergetemp.csv