Использовать Group-Object
$Servers = @"
TSMServer,Cluster,VM,
HTS01,APP-P02,Server9839
HTS01,APP-P13,Server3221
HTS01,APP-P13,Server3230
HTS05,APP-P12,Server3182
HTS05,APP-P12,Server9829
GTS05,APP-P06,Server0057
GTS05,APP-P06,Server0421
GTS05,APP-P06,Server2426
GTS05,APP-P06,Server0286
GTS05,APP-P06,Server0302
GTS05,APP-P07,Server0312
GTS05,APP-P12,Server2845
GTS05,APP-P12,Server3135
HTS01,APP-P10,Server1052
HTS05,APP-P12,Server3155
HTS05,APP-P12,Server3185
HTS05,APP-P12,Server9830
"@ | ConvertFrom-Csv
$Servers | Sort-Object TSMServer,Cluster | Group-Object TSMServer,Cluster|
ForEach-Object {
$TSMServer,$Cluster = $_.Name -split ', '
[PSCustomObject]@{
TSMServer = $TSMServer
Cluster = $Cluster
VMs =($_.Group.VM | Sort-Object) -Join ','
}
}
Пример вывода:
TSMServer Cluster VMs
--------- ------- ---
GTS05 APP-P06 Server0057,Server0286,Server0302,Server0421,Server2426
GTS05 APP-P07 Server0312
GTS05 APP-P12 Server2845,Server3135
HTS01 APP-P02 Server9839
HTS01 APP-P10 Server1052
HTS01 APP-P13 Server3221,Server3230
HTS05 APP-P12 Server3155,Server3182,Server3185,Server9829,Server9830