Powershell 排序对象-唯一

Mea*_*sel 3 arrays powershell

我有一个包含各种任务编号的数组,我试图获取唯一的成员和非唯一的成员(因为我必须为每个任务采取不同的操作)

现在,如果我使用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 
Run Code Online (Sandbox Code Playgroud)

Mar*_*ndl 5

您可以使用Group-Objectcmdlet根据. TaskNumber这将允许您根据属性的出现来过滤对象。

以下代码片段将返回TaskNumber出现一次的每个:

$Thisweekarray | 
    Group-Object TaskNumber | 
    Where-Object Count -eq 1 | 
    Select-Object -Expand Group 
Run Code Online (Sandbox Code Playgroud)

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