对 csv 重复列进行分组

Group a csv duplicate column

我对分组和导出具有日常机器状态重复值的 csv 列感到有点困惑。每台机器将只有两个重复值。

hostname  status   
ABC         up      
DEF         up      
GHI         down    
ABC         down    
DEF         up      
GHI         up      

我正在寻找

hostname  status_morning   status_evening
ABC          up               down 
DEF          up                 up
GHI          down               up
$groups = import-csv .\machine-status.csv | group-object hostname
foreach($group in $groups){
Select-Object @{Name='Hostname'   ;Expression={$_.Values[0]}},
               @{Name='status_morning';Expression={$_.Values[1]}},
              @{Name='status_evening' ;Expression={$_.Values[2]}}

}

肯定还有其他简单的方法,但是下面的代码有效。

$csv = Import-csv C:\PS\stack.csv | Group-Object 'HostName'
$csv | Select-Object 'Name',@{ n='Morning_status';e={$_.Group.status[0]}},@{ n='Evening_status';e={$_.Group.status[1]}}