Select-Object コマンドレットの使用

オブジェクトの特定プロパティの選択

Select-Object コマンドレットの便利な機能の 1 つは、並べられたコレクションの最初 (または末尾) から一部のオブジェクトを選択的に取得できることです。たとえば、 Get-ChildItem コマンドレットを使用すると、C:\Windows フォルダに含まれるすべてのファイル一覧を取得できます。次のその情報を Sort-Object コマンドレットにパイプ処理し、ファイルをサイズ (長さ) で並べ替えます。これで、本当に注目するのはフォルダに含まれる 3 つの最も大きなファイルだけだとします。これはどのように決定しますか。

次に、その方法をお見せしましょう。

Get-ChildItem c:\windows\*.* | Sort-Object length -descending | Select-Object -first 3

降順でコレクションを並べ替えると、最も大きなファイルが一番上になり、最も小さいファイルが一番下になります。コレクション内で最も大きな 3 つのファイルを決定するには、Select-Object を呼び出し、-first パラメータを含めて、返すアイテム数を指定します。つまり、次のようにします。

Select-Object -first 3

3 つの最も小さなファイルの場合はどうなるでしょうか。そのファイルは一覧の末尾にあることがわかるので、次のように -last パラメータを使用します。

Get-ChildItem c:\windows\*.* | Sort-Object length -descending | Select-Object -last 3

また、Select-Object を使用して、オブジェクトから選択したプロパティのみをコマンドに使用するように指定できます (たとえば、特定のプロパティのみを画面に表示するなど)。たとえば、既定では、いつでも Get-Process コマンドレットを実行し、Format-List 経由でパイプ処理すると、次のような結果が返されます。

Id      : 1924
Handles : 273
CPU     : 2.046875
Name    : svchost

ただし、実際に必要な操作は、プロセス名と ID を表示することだけだとします。問題ありません。Select-Object で処理情報を渡し、Name プロパティと ID プロパティのみを選択するように要求するだけです。

Get-Process | Select-Object name,id | Format-List

どうなりましたか。次のような出力になります。

Name : atiptaxx
Id   : 2440

Name : BTStackServer
Id   : 524

すべてのプロパティとプロパティ値を取得するには、ワイルドカード文字を使用します。次のコマンドは、処理情報を取得し、すべてのプロパティがリストで表示されます。

Get-Process | Select-Object *

よい質問です。Site と Container 以外のすべてのプロパティが必要だとします。問題ありません。-exclude パラメータを付加して、返すデータセットから除外するファイルの種類を指定するだけです。

Get-Process | Select-Object * -exclude site,container
Select-Object のエイリアス
  • select

関連リンク