带有对象分组的Powershell生成列表



假设CSV文件:

Name,group_name,group_id
foo,Best,1
bar,Worst,2
baz,Best,1
bob,Worst,2

Powershell分组的最简单形式是什么?我可以使用它来获得以下输出:

Count    group_id    group_name Names
-----    --------    ---------- -----
2        1           Best       ["foo", "baz"]
2        2           Worst      ["bar", "bob"]

使用Group-Objectcmdlet按名称和id将行分组,然后使用Select-Object从每个组中提取相应的详细信息作为单独的属性:

# replace with `$Data = Import-Csv pathtofile.csv`
$Data = @'
Name,group_name,group_id
foo,Best,1
bar,Worst,2
baz,Best,1
bob,Worst,2
'@|ConvertFrom-Csv
# Group rows, then construct output record with `Select-Object`
$Data |Group-Object group_name,group_id |Select-Object Count,@{Name='group_id';Expression={$_.Group[0].group_id}},@{Name='group_name';Expression={$_.Group[0].group_name}},@{Name='Names';Expression={$_.Group.Name}}

最新更新