もくじ
📝 はじめに
PowerShellで一覧を扱っていると、
「同じ値が何度も表示されて見づらい」
「重複しているデータを1つにまとめたい」
と感じる場面はよくあります。
そんなときに使えるのが
Select-Object -Unique です。
この記事では、重複を除外して一覧を整理する基本的な使い方を、
初めての方でも理解しやすいように解説します。
- 一覧から重複行を取り除きたい
- ユーザー名やプロセス名を一意にしたい
- 後続処理のためにデータを整理したい
✅ このコマンドでできること(要点)
- 同じ値が連続している行を1つにまとめられる
- 一覧をすっきり整理できる
- 結果をそのまま後続処理に渡せる
- 簡単な指定で重複除外ができる
✅ Select-Object -Unique でできること
Select-Object -Unique は、
パイプラインで渡されたオブジェクトの中から、
同じ内容が続いているものを1つだけ残すための指定です。
完全な「重複削除」というより、
「並び順を保ったまま重複をまとめる」というイメージが近いです。
🧩 基本構文
Select-Object -Unique
この指定を追加するだけで、
重複した行をまとめた結果を取得できます。
▶ 基本的な使い方(まずこれだけ)
🔹 プロセス名の重複を除外する
Get-Process | Select-Object Name -Unique
同じプロセス名が複数あっても、
1つだけ表示されます。
一覧が整理されていれば、正しく動作しています。
🔹 ファイル拡張子を一意にする
Get-ChildItem | Select-Object Extension -Unique
フォルダ内に存在する拡張子の種類だけを確認できます。
🛠 よく使われる指定例
🔹 Sort-Object と組み合わせる
Get-Process | Sort-Object Name | Select-Object Name -Unique
並び替えたうえで重複を除外することで、
より確実に一意な一覧を取得できます。
この結果が表示されていれば問題ありません。
🔹 文字列一覧を整理する
"a","b","a","c","b" | Select-Object -Unique
連続している同じ値がまとめられて表示されます。
💼 実務でよく使う使用例(応用)
🔹 ユーザー一覧を重複なしで取得
Get-LocalUser | Select-Object Name -Unique
🔹 ログデータの種類を整理する
Get-Content log.txt | Sort-Object | Select-Object -Unique
- Sort-Object で事前に並び替え
- Where-Object で条件抽出
- Export-Csv で結果を保存
🧩 よくある勘違い・つまずきポイント
- 完全な重複削除ではなく「連続した重複」の除外である
- 並び替えしないと期待通りに除外されないことがある
- 比較対象は表示しているプロパティになる
- 元のデータが変更されるわけではない
- 大文字・小文字の違いは通常区別されない
🔄 cmdとの違いについて
cmdでは重複除外を行うには
sort /unique などを使う必要があります。
PowerShellでは
Select-Object -Unique を使うことで、
パイプラインの流れの中で自然に処理できます。
⚠ エラー・うまく動かないときの確認ポイント
- 事前に Sort-Object を使っているか
- 比較したいプロパティだけを選択しているか
- 意図しない列が含まれていないか
- データが文字列として扱われているか
🧠 注意点
Select-Object -Unique は手軽ですが、
大量データや完全な重複削除が必要な場合は、
別の方法(Group-Object など)を検討した方がよいこともあります。
📌 まとめ
- Select-Object -Unique は重複をまとめるための簡単な指定
- 並び替えと組み合わせることで効果を発揮する
- 一覧を整理し、後続処理をしやすくできる
- 次は Group-Object との違いを理解すると応用が広がる
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- 重複データを整理したい
- 一覧をすっきりさせたい
