如何通过在Powershell中保留重复的列名来合并两个csv文件

如何通过在Powershell中保留重复的列名来合并两个csv文件,powershell,Powershell,我有“a.csv”和“b.csv”。我试图用下面的命令合并它们 cd c:/users/mine/test Get-Content a.csv, b.csv | Select-Object -Unique | Set-Content -Encoding ASCII joined.csv 但我在a.csv行的末尾添加了像b.csv这样的输出文件。我想在a.csv列的末尾添加,然后b.csv列应该开始 注意:-我无法在我的服务器中安装联接对象模块 Vm Resource SI

我有“a.csv”和“b.csv”。我试图用下面的命令合并它们

cd c:/users/mine/test 
Get-Content   a.csv, b.csv |  Select-Object -Unique | Set-Content -Encoding ASCII joined.csv
但我在a.csv行的末尾添加了像b.csv这样的输出文件。我想在a.csv列的末尾添加,然后b.csv列应该开始
注意:-我无法在我的服务器中安装联接对象模块

Vm     Resource    SID
mnvb    vclkn     vxjcb
vjc.v   vnxc,m    bvkxncb

Vm      123     456     789
b      apple    banana  orange 
v      lemon    onion   tomato
我的预期输出应该如下所示。无需更改顺序并保留Vm列名,无需过度写入

Vm     Resource    SID   Vm   123      456  789
mnvb    vclkn   vxjcb    b   apple    banana  orange 
vjc.v   vnxc,m  bvkxncb  v   lemon    onion   tomato
这是基于脚本而不是模块的,这意味着您可以先在另一台机器上“安装”(下载)它,然后将其(或内容)复制/粘贴到服务器上。您也可以从和脚本下载它:
\Join Object.ps1

另见:

针对您的问题:

正如@Theo所评论的,“在csv中重复列名是件坏事”,特别是在PowerShell中,如果使用
ConvertFrom csv
cmdlet,则会在这样的csv文件上导致错误。
尽管脚本可以通过省略
-on
参数,基于行索引连接对象。在这种情况下,默认情况下,它将在数组的两侧放置列:

Import-Csv a.csv | Join-Object (Import-Csv b.csv) | Format-Table

Vm         Resource SID     123   456    789
--         -------- ---     ---   ---    ---
{mnvb, b}  vclkn    vxjcb   apple banana orange
{vjc.v, v} vnxc,m   bvkxncb lemon onion  tomato
通过使用
-Discern
参数,
Join Object
使用Discern值作为前缀,在两列上吐出重复值:

Import-Csv a.csv | Join-Object (Import-Csv b.csv) -Discern a,b | Format-Table

aVm   Resource SID     bVm 123   456    789
---   -------- ---     --- ---   ---    ---
mnvb  vclkn    vxjcb   b   apple banana orange
vjc.v vnxc,m   bvkxncb v   lemon onion  tomato

我无法在我的服务器中安装联接对象模块在csv(或任何类型的结构化数据)中,重复列名是一件坏事。你为什么想要那个???@熨斗它工作了…谢谢