EmplID,identity,Name,PreferredName,Location,Department
identity,EmplID,first_name,last_name,email
Emplid,Extension
我想通过比较所有文件中常见的EmpID
的值来合并所有这3个CSV,并生成一个包含以下所有字段的新CSV。
EmplID,identity,Name,PreferredName,Location,Department,first_name,last_name,email,Extension
答案 0 :(得分:0)
已经很晚了,我很无聊,所以让我们这样做......
$CSV1 = Import-CSV C:\Path\To\File1.csv
$CSV2 = Import-CSV C:\Path\To\File2.csv
$CSV3 = Import-CSV C:\Path\To\File3.csv
$Merged = ForEach($Record in $CSV1){
Add-Member -InputObject $Record -NotePropertyName 'first_name' -NotePropertyValue ($CSV2|Where{$_.EmplID -eq $Record.EmplID}|Select -Expand first_name)
Add-Member -InputObject $Record -NotePropertyName 'last_name' -NotePropertyValue ($CSV2|Where{$_.EmplID -eq $Record.EmplID}|Select -Expand last_name)
Add-Member -InputObject $Record -NotePropertyName 'email' -NotePropertyValue ($CSV2|Where{$_.EmplID -eq $Record.EmplID}|Select -Expand email)
Add-Member -InputObject $Record -NotePropertyName 'Extension' -NotePropertyValue ($CSV3|Where{$_.EmplID -eq $Record.EmplID}|Select -Expand Extension) -PassThru
}
$Merged | Export-CSV C:\Path\To\New.CSV -NoTypeInfo
将每个CSV文件加载到变量中,然后循环遍历CSV1,并为其中的每个记录添加4个属性。对于每个属性,它尝试基于作为索引的EmplID在CSV2或CSV3中查找匹配记录,并将该记录的相对属性扩展为新属性的值。它使用-PassThru开关作为最后一个Add-Member,以便它为每条记录输出一次记录,并且这些记录都在$ Merged数组中收集。然后我将$ Merged输出到一个新的CSV文件中。