Get-Unique

並べ替えられた一覧から一意の項目を返します。

構文

Get-Unique [-AsString] [-InputObject <psobject>] [<CommonParameters>]

Get-Unique [-OnType] [-InputObject <psobject>] [<CommonParameters>]

説明

Get-Unique コマンドレットは、並べ替えられた一覧の各項目をその次の項目と比較し、重複があった場合はそれを取り除き、各項目のインスタンスを 1 つだけ返します。このコマンドレットが正しく動作するには、一覧が並べ替えられている必要があります。

パラメーター

-AsString

データを文字列として扱います。このパラメーターを指定しない場合、データはオブジェクトとして扱われます。したがって、ファイルのコレクションなど、同じ型のオブジェクトのコレクションを Get-Unique に送ると、最初の 1 つだけが返されます。このパラメーターを使用すると、ファイル名など、オブジェクト プロパティの一意の値を見つけることができます。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-InputObject <psobject>

Get-Unique の入力を受け入れます。オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

Get-Unique は、InputObject を使用して送られた入力をコレクションとして扱い、コレクション内の各項目は列挙しません。コレクションは単一の項目であるため、InputObject に指定された入力が必ずそのまま返ります。

必須

false

位置

named

既定値

パイプライン入力を許可する

true (ByValue)

ワイルドカード文字を許可する

false

-OnType

各型のオブジェクトを 1 つだけ返します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

System.Management.Automation.PSObject

パイプを使用してどのような型のオブジェクトでも Get-Unique に渡すことができます。

出力

System.Management.Automation.PSObject

Get-Unique から返されるオブジェクトの型は、入力によって決まります。

Get-Unique は、その組み込みエイリアスである "gu" で参照することもできます。詳細については、「about_Aliases」を参照してください。

一覧を並べ替えるには、Sort-Object を使用します。Sort-Object で Unique パラメーターを使用すると、一覧から一意の項目を見つけることもできます。

例 1

C:\PS>$a = $(foreach ($line in get-content C:\Test1\File1.txt) {$line.tolower().split(" ")}) | sort | get-unique

C:\PS> $a.count

説明
-----------
これらのコマンドは、テキスト ファイル内にある一意の語の数を調べます。

最初のコマンドは、File.txt ファイルの内容を取得します。各テキスト行を小文字に変換し、スペース (" ") で区切られた単語ごとに、それぞれ別の行に分解します。次に、こうしてできた一覧をアルファベット順 (既定) に並べ替え、Get-Unique コマンドレットを使用して重複する語を取り除きます。この結果は $a 変数に保存されます。

2 番目のコマンドは、$a に保存されている文字列のコレクションの Count プロパティを使用して、$a に保存されている項目数を特定します。





例 2

C:\PS>1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | sort-object | Get-Unique

説明
-----------
このコマンドは、一連の整数の中から一意のメンバーを見つけます。最初のコマンドは、コマンド ラインに入力された整数の配列を受け取り、パイプを使用して Sort-Object コマンドレットに渡して並べ替えた後、パイプを使用して Get-Unique に渡して重複エントリを取り除きます。





例 3

C:\PS>get-childitem | sort-object {$_.GetType()} |  unique -OnType

説明
-----------
このコマンドは、Get-ChildItem コマンドレットを使用して、ファイルやディレクトリなどローカル ディレクトリの内容を取得します。その結果は、パイプライン演算子 (|) によって Sort-Object コマンドレットに渡されます。$_.GetType() ステートメントで各ファイルまたはディレクトリに GetType メソッドが適用されます。次に、Sort-Object は型ごとに項目を並べ替えます。もう 1 つのパイプライン演算子は、結果を Get-Unique に渡します。OnType パラメーターが指定されているため、Get-Unique は各型のオブジェクトを 1 つだけ返します。





例 4

C:\PS>get-process | sort-object | select processname | get-unique -asstring

説明
-----------
このコマンドは、コンピューター上で実行しているプロセスの名前を、重複分を取り除いて取得します。

Get-Process コマンドは、コンピューター上のプロセスをすべて取得します。結果はパイプライン演算子 (|) によって Sort-Object に渡されます。Sort-Object は ProcessName に基づいてプロセスをアルファベット順 (既定) に並べ替えます。結果はパイプを使用して Select-Object コマンドレットに渡され、各オブジェクトの ProcessName プロパティの値のみが選択されます。次に、結果はパイプを使用して Get-Unique に渡され、重複が取り除かれます。

AsString パラメーターが指定されているため、Get-Unique は ProcessName の値を文字列として扱います。このパラメーターを指定しない場合、Get-Unique は ProcessName の値をオブジェクトとして扱い、オブジェクトのインスタンスを 1 つだけ、つまり一覧の最初のプロセス名を返します。





関連項目

概念

Select-Object
Sort-Object