web-dev-qa-db-ja.com

Get-Uniqueとselect-object-uniqueの違い

PowerShellを使用して、「import-csv」を介してファイルからcsvデータをオブジェクト$ csvListにインポートします。このcsvデータには、Benutzerという列があります。このようなことをするとき:

$csvList | %{$_.Benutzer} | select-object -unique

特別なことは何もありません。予想どおり、Benutzerの一意のエントリが返されます。これは約10アイテムです。しかしながら、

$csvList | %{$_.Benutzer} | get-unique -asstring

または

$csvList | Group($_.Benutzer)

各エントリをunqiueとして扱うようです。つまり、get-uniqueの場合は260 Benutzerの配列全体が返され、groupステートメントの場合は260グループが作成されます。 PowerShell4.0を使用しています。

ここで何が起こっているのか考えていただければ幸いです...

9
StefG

Get-Uniqueヘルプから:

Get-Uniqueコマンドレットは、ソート済みリスト ..の各アイテムを比較します。

Select-Object -Uniqueでは、オブジェクトを事前に並べ替える必要はありません。

例:

PS> 9,8,9,8 | Get-Unique -AsString
9
8
9
8

例:

PS> 9,8,9,8 | Sort-Object -Unique
8
9

Group-Objectについては、コマンドの構文が異なる必要があります。($_.Benutzer)をプロパティ名Benutzerに置き換えてください。

$csvList | Group-Object Benutzer
14
Roman Kuzmin