2017-05-15 13 views
2

私は、さまざまなTaskNumbersを含む配列を持っています。ユニークでないメンバーとユニークでないメンバーを取得しようとしています(それぞれ異なるアクションをとる必要があるため)Powershell Sort-Object -Unique

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 

答えて

3

あなたはTaskNumberに基づいグループリストにGroup-Objectコマンドレットを使用することができます。これにより、プロパティのオカレンスに基づいてオブジェクトをフィルタリングすることができます。

次のスニペットは、唯一は一度起こるすべてのTaskNumber返します。

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

だけで、複数の発生にTaskNumberを取得するためにWhere-Object Count -gt 1を使用します。

関連する問題