オブジェクトまたは一連のオブジェクトの指定されたプロパティを選択します。また、オブジェクトの配列から一意のオブジェクトを選択することや、オブジェクトの配列の先頭または末尾から指定された数のオブジェクトを選択することも可能です。

構文

Select-Object [[-Property] <Object[]>] [-ExcludeProperty <string[]>] [-ExpandProperty <string>] [-First <int>] [-InputObject <psobject>] [-Last <int>] [-Skip <int>] [-Unique] [<CommonParameters>]

Select-Object [-Index <Int32[]>] [-InputObject <psobject>] [-Unique] [<CommonParameters>]

説明

Select-Object コマンドレットは、オブジェクトまたは一連のオブジェクトの指定されたプロパティのみを取得します。また、オブジェクトの配列から一意のオブジェクトを選択することや、オブジェクトの配列の先頭または末尾から指定された数のオブジェクトを選択することも可能です。

指定されたプロパティを Select-Object を使用して選択すると、その指定されたプロパティの値が入力オブジェクトからコピーされ、指定されたプロパティとコピーされた値を持つ新しいオブジェクトが作成されます。

Property パラメーターを使用して、選択するプロパティを指定します。または、First、Last、Unique、Skip、および Index パラメーターを使用して、入力オブジェクトの配列から特定のオブジェクトを選択します。より特定のオブジェクト フィルター処理を行う場合は、Where-Object コマンドレットを使用します。

パラメーター

-ExcludeProperty <string[]>

指定したプロパティを選択対象から削除します。ワイルドカードを使用できます。このパラメーターは、コマンドに Property パラメーターも指定されている場合にのみ有効です。

Property パラメーターの値には、集計プロパティを指定できます。集計プロパティとは、名前を指定し、プロパティの表示用の値を計算するハッシュ テーブルです。有効なキーは次のとおりです。

-- Name または Label <string>

-- Expression <string> または <scriptblock>

詳細については、例を参照してください。

必須

false

位置

named

既定値

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

false

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

true

-ExpandProperty <string>

選択するプロパティを指定し、そのプロパティを展開する必要があることを示します。プロパティ名にはワイルドカードを使用できます。

たとえば、指定されたプロパティが配列である場合、配列の各値が出力に含まれます。そのプロパティにオブジェクトが含まれている場合、そのオブジェクトのプロパティが出力に表示されます。

必須

false

位置

named

既定値

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

false

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

true

-First <int>

選択するオブジェクトの数を、入力オブジェクトの配列の先頭から指定します。

必須

false

位置

named

既定値

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

false

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

false

-Index <Int32[]>

インデックス値に基づいて配列からオブジェクトを選択します。インデックスをコンマ区切り一覧に入力します。

配列のインデックスは 0 から始まります。ここで 0 は最初の値、(n-1) は最後の値を表します。

必須

false

位置

named

既定値

なし

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

false

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

false

-InputObject <psobject>

パイプラインを介してコマンドレットに送信するオブジェクトを指定します。このパラメーターにより、パイプを使用してオブジェクトを Select-Object に渡すこともできます。

必須

false

位置

named

既定値

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

true (ByValue)

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

false

-Last <int>

選択するオブジェクトの数を、入力オブジェクトの配列の末尾から指定します。

必須

false

位置

named

既定値

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

false

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

false

-Property <Object[]>

選択対象のプロパティを指定します。ワイルドカードを使用できます。

Property パラメーターの値には、新しい集計プロパティを指定できます。集計プロパティを作成するには、ハッシュ テーブルを使用します。有効なキーは次のとおりです。

-- Name (または Label) <string>

-- Expression <string> または <script block>

必須

false

位置

1

既定値

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

false

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

true

-Skip <int>

指定した数の項目をスキップします (選択しません)。既定では、Skip パラメーターはオブジェクトの配列または一覧の先頭からカウントします。ただし、コマンドで Last パラメーターが使用されている場合、このパラメーターは一覧または配列の最後からカウントします。

Index パラメーターは 0 からカウントしますが、Skip パラメーターは 1 からカウントします。

必須

false

位置

named

既定値

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

false

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

false

-Unique

入力オブジェクトのサブセットが同一のプロパティと値を持っている場合、そのサブセットの単一のメンバーのみが選択されるように指定します。

必須

false

位置

named

既定値

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

false

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

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.

入力と出力

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

入力

System.Management.Automation.PSObject

パイプを使用して、あらゆるオブジェクトを Select-Object に渡すことができます。

出力

System.Management.Automation.PSObject

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

例 1

C:\PS>get-process | select-object ProcessName,Id,WS

説明
-----------
このコマンドはプロセスの一覧を表示します。表示されるのは、プロセスの名前、ID、およびワーキング セット (WS) プロパティのみです。






例 2

C:\PS>get-process | select-object processname -expandproperty modules |
format-list

ProcessName       : 00THotkey
Size              : 256
Company           : TOSHIBA Corporation
FileVersion       : 1, 0, 0, 27
ProductVersion    : 6, 2, 0, 0
Description       : THotkey
Product           : TOSHIBA THotkey
ModuleName        : 00THotkey.exe
FileName          : C:\WINDOWS\system32\00THotkey.exe
BaseAddress       : 4194304

説明
-----------
このコマンドは、コンピューター上で実行しているプロセスで使用されているモジュールの情報を表示します。ExpandProperty パラメーターを使用して、modules プロパティに含まれている詳細情報を表示します。






例 3

C:\PS>get-process | sort-object -property WS | select-object -Last 5

Handles  NPM(K)    PM(K)      WS(K) VS(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
   2866     320    33432      45764   203   222.41   1292 svchost
    577      17    23676      50516   265    50.58   4388 WINWORD
    826      11    75448      76712   188    19.77   3780 Ps
   1367      14    73152      88736   216    61.69    676 Ps
   1612      44    66080      92780   380   900.59   6132 INFOPATH

説明
-----------
このコマンドは、メモリの大部分を使用しているプロセスを 5 個表示します。Sort-Object コマンドレットは、メモリ (ワーキング セット) 使用率に従ってプロセスを並べ替えるために使用されており、Select-Object コマンドレットは、並べ替えられたオブジェクトの配列から最後の 5 メンバーのみを選択するために使用されています。






例 4

C:\PS>get-process | select-object -property ProcessName,@{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}}

ProcessName  StartDay
----         --------
alg          Wednesday
ati2evxx     Wednesday
ati2evxx     Thursday
...

説明
-----------
このコマンドは、コンピューター上で実行しているプロセスの名前と開始日を表示します。

Property パラメーターの値は ProcessName と "Start Day" という名前の集計プロパティです。"Start Day" プロパティは、Name および Expression キーを持つハッシュ テーブルを使用して追加されています。






例 5

C:\PS>"a","b","c","a","a","a" | select-object -unique

a
b
c

説明
-----------
このコマンドは、文字の配列から一意の文字を表示します。






例 6

C:\PS>$a = get-eventlog -log "Windows PowerShell" 

C:\PS> $a | select-object -index 0, ($a.count - 1)

説明
-----------
これらのコマンドは、Windows PowerShell イベント ログの最初 (最新) および最後 (最古) のイベントを取得します。

最初のコマンドは、Get-EventLog コマンドレットを使用して、Windows PowerShell ログのすべてのイベントを取得します。このコマンドは、イベントを $a 変数に保存します。

2 番目のコマンドは、パイプライン演算子 (|) を使用して、$a に保存されているイベントを Select-Object コマンドレットに送信します。Select-Object コマンドは、Index パラメーターを使用して、インデックス番号により項目を選択します。最初のイベントのインデックスは 0 です。最後のイベントのインデックスは、$a に保存されている項目数から 1 を引いた数です。






例 7

C:\PS>new-pssession -computername (get-content servers.txt | select-object -skip 1)

説明
-----------
このコマンドは、Servers.txt ファイル (最初のファイルを除く) に示されている各コンピューターで、新しい PSSession を作成します。

このコマンドは、Select-Object コマンドレットを使用して、コンピューター名の一覧から最初のコンピューターを除くすべてのコンピューターを選択します。取得したコンピューターの一覧は、New-PSSession コマンドレットの ComputerName パラメーターの値として設定されます。






関連項目




目次