Select-Object -Unique在一个属性上工作但是显示多个?

时间:2018-03-19 10:17:55

标签: powershell

我有一组带有显示名称和电子邮件地址的对象。我想过滤它,以便只显示唯一的显示名称。相同的显示名称可以具有不同的电子邮件地址,如下所示:

enter image description here

然而,当我这样做时:

> Sys.setenv(LD_LIBRARY_PATH="/usr/lib/libreoffice/program")
> system("loffice --headless --convert-to pdf /tmp/foo.xlsx")
convert /tmp/foo.xlsx -> //foo.pdf using filter : calc_pdf_Export
Overwriting: //foo.pdf

我不会得到一个DisplayName,而是所有四个对象。

如何实现它以便只显示一个对象?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您可以先获取DisplayNames的唯一列表,然后在循环中为每个DisplayName选择第一个对象。您可以应用不同的逻辑,而不是下面的简单排序,例如获取非空的字段:

$UniqueArray = $objectArray | Select-Object DisplayName -Unique | ForEach-Object {
    $DisplayName = $_.DisplayName
    $objectArray | Where-Object DisplayName -eq $DisplayName | Sort-Object LoginName | Select-Object -First 1
}