获取PSObjects的一些属性的唯一/不同值?

时间:2015-07-20 22:15:22

标签: powershell

以下语句只返回一行,即使有多个不同的行。

import-csv $fname | select "C1", 'C2' | Get-Unique

如何获取所选C1C2的实际唯一值?

如果只选择了一个属性,-ExpandProperty可以解决问题。我希望它返回与SQL语句select distinct C1, C2 from ....相同的结果。

1 个答案:

答案 0 :(得分:4)

您可以使用Group-Object

来实现这一目标
Import-Csv $fname | Group-Object -Property 'C1', 'C2' | Select-Object -ExpandProperty Name

如果您需要提取值,请将Name参数拆分为,

$Uniques = Import-Csv $fname | Group-Object -Property 'C1', 'C2' | ForEach-Object { 
    @($_.Name -Split ', ')
}

如果属性不是字符串,或者它们包含逗号,则可以从每个组中选择第一个对象:

$Uniques = Import-Csv $fname | Select-Object 'C1','C2' | Group-Object -Property 'C1', 'C2' | ForEach-Object { 
    $_.Group | Select-Object -First 1 
}