Get-Unique
並べ替えられたリストから一意の項目を返します。
構文
Get-Unique
[-InputObject <PSObject>]
[-AsString]
[-CaseInsensitive]
[<CommonParameters>]
Get-Unique
[-InputObject <PSObject>]
[-OnType]
[-CaseInsensitive]
[<CommonParameters>]
説明
Get-Unique
コマンドレットは、並べ替えられたリスト内の各項目を次の項目と比較し、重複を排除し、各項目のインスタンスを 1 つだけ返します。 コマンドレットが適切に機能するためにはリストを並べ替える必要があります。
既定では、 Get-Unique
では大文字と小文字が区別されます。 その結果、大文字と小文字のみが異なる文字列は一意であると見なされます。
例
例 1: テキスト ファイル内の一意の単語を取得する
これらのコマンドは、テキスト ファイルの一意の単語の数を調べます。
$A = $( foreach ($line in Get-Content C:\Test1\File1.txt) {
$line.tolower().split(" ")
}) | Sort-Object | Get-Unique
$A.count
最初のコマンドは、 File.txt
ファイルの内容を取得します。 テキストの各行を小文字に変換し、各単語をスペース (" "
) の個別の行に分割します。 次に、結果のリストをアルファベット順 (既定) に並べ替え、 Get-Unique
コマンドレットを使用して重複する単語を排除します。 結果は $A
変数に格納されます。
2 番目のコマンドでは、$A
内の文字列のコレクションの Count プロパティを使用して、$A
内の項目の数を確認します。
例 2: 配列内の一意の整数を取得する
このコマンドは、整数のセットの一意のメンバーを取得します。
1,1,1,1,12,23,4,5,4643,5,3,3,3,3,3,3,3 | Sort-Object | Get-Unique
1
3
4
5
12
23
4643
最初のコマンドは、コマンド ラインで入力された整数の配列を受け取り、それらを並べ替える Sort-Object
コマンドレットにパイプし、それらをパイプして Get-Unique
し、重複するエントリを排除します。
例 3: ディレクトリ内の一意のオブジェクト型を取得する
このコマンドでは、 Get-ChildItem
コマンドレットを使用して、ファイルとディレクトリを含むローカル ディレクトリの内容を取得します。
Get-ChildItem | Sort-Object {$_.GetType()} | Get-Unique -OnType
パイプライン演算子 (|
) は、結果を Sort-Object
コマンドレットに送信します。 $_.GetType()
ステートメントは、各ファイルまたはディレクトリに GetType メソッドを適用します。 次に、 Sort-Object
は項目を種類別に並べ替えます。 別のパイプライン 演算子が結果を Get-Unique
に送信します。 OnType パラメーターは、各型のオブジェクトを 1 つだけ返すようにGet-Unique
を指示します。
例 4: 一意のプロセスを取得する
このコマンドは、コンピューター上で実行されているプロセスの名前を取得し、重複を削除してその結果を返します。
Get-Process | Sort-Object | Select-Object processname | Get-Unique -AsString
Get-Process
コマンドは、コンピューター上のすべてのプロセスを取得します。 パイプライン演算子 (|
) は結果を Sort-Object
に渡します。既定では、プロセスは ProcessName でアルファベット順に並べ替えられます。 結果は Select-Object
コマンドレットにパイプ処理され、各オブジェクトの ProcessName プロパティの値のみが選択されます。 結果はパイプ処理され、重複を排除するために Get-Unique
されます。
AsString パラメーターは、ProcessName 値を文字列として扱うようにGet-Unique
に指示します。
このパラメーターを指定しない場合、 Get-Unique
は ProcessName 値をオブジェクトとして扱い、オブジェクトのインスタンス (つまり、リスト内の最初のプロセス名) を 1 つだけ返します。
例 5: 大文字と小文字を区別する比較を使用して一意の文字列を取得する
この例では、大文字と小文字を区別しない比較を使用して、文字列の配列から一意の文字列を取得します。
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object -CaseSensitive | Get-Unique
aa
Aa
bb
Bb
例 6: 大文字と小文字を区別しない比較を使用して一意の文字列を取得する
この例では、大文字と小文字を区別しない比較を使用して、文字列の配列から一意の文字列を取得します。
"aa", "Aa", "Bb", "bb", "aa" | Sort-Object | Get-Unique -CaseInsensitive
aa
Bb
パラメーター
-AsString
このコマンドレットがデータを文字列として使用することを示します。 このパラメーターを指定しないと、データはオブジェクトとして扱われるので、ファイルのコレクションなど、同じ型のオブジェクトのコレクションを Get-Unique
に送信すると、1 つ目のオブジェクトだけが返されます。 このパラメーターを使用すると、ファイル名などのオブジェクトのプロパティの一意の値を検索できます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-CaseInsensitive
既定では、 Get-Unique
では大文字と小文字が区別されます。 このパラメーターを使用する場合、コマンドレットは大文字と小文字を区別しない比較を使用します。
このパラメーターは PowerShell 7.4 で追加されました。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
Get-Unique
の入力を指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。
このコマンドレットは、 InputObject を使用して送信された入力をコレクションとして扱います。 コレクション内の個々の項目は列挙されません。 コレクションは 1 つの項目であるため、 InputObject を使用して送信された入力は常に変更されずに返されます。
型: | PSObject |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-OnType
このコマンドレットは、各型のオブジェクトを 1 つだけ返します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
任意の種類のオブジェクトをこのコマンドレットにパイプできます。
出力
このコマンドレットは、重複せずに入力オブジェクトを返します。
メモ
PowerShell には、 Get-Unique
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
gu
詳細については、「about_Aliases」を参照してください。
リストを並べ替えるには、 Sort-Object
を使用します。 Sort-Object
の Unique パラメーターを使用して、リスト内の一意の項目を検索することもできます。
関連リンク
PowerShell