Powershell Sort-Object -Unique

时间:2017-05-15 06:12:19

标签: arrays powershell

我有一个包含各种TaskNumbers的数组,我正在尝试获取唯一的成员和非唯一的成员(因为我必须为每个成员采取不同的操作)

现在,如果我使用Sort-Object -Property TaskNumber -Unique,它会为它找到的每组非唯一值返回1个非唯一值(参见下面的TK-15386)。我需要实际获得唯一的值,而不是包含一个实际上根本不是唯一的结果。即使我可以用某种方式标记此独奏返回的非唯一值,我可以在以后对其进行说明。有人有任何想法吗?我正在使用PS v4,但如果在v5中有某种修复方法可以升级。

$Thisweekarray | Select-Object -Property TaskNumber | Sort-Object -Property TaskNumber 

TK-02213                                                                                                                                                                             
TK-02242                                                                                                                                                                             
TK-15386                                                                                                                                                                             
TK-15386                                                                                                                                                                             
TK-15386                                                                                                                                                                             
TK-15386                                                                                                                                                                             
TK-15387                                                                                                                                                                             

$Thisweekarray | Select-Object -Property TaskNumber | Sort-Object -Property TaskNumber -Unique                                                                                                                                                                          

TK-02213                                                                                                                                                                             
TK-02242                                                                                                                                                                             
TK-15386                                                                                                                                                                             
TK-15387 

1 个答案:

答案 0 :(得分:4)

您可以根据Group-Object使用TaskNumber cmdlet 分组列表。这将允许您根据属性的出现过滤对象。

以下代码段将返回每个TaskNumber只有一次的内容:

$Thisweekarray | 
    Group-Object TaskNumber | 
    Where-Object Count -eq 1 | 
    Select-Object -Expand Group 

只需使用Where-Object Count -gt 1获取多次出现的TaskNumber。