Select-Object
オブジェクトまたは一連のオブジェクトの指定されたプロパティを選択します。また、オブジェクトの配列から一意のオブジェクトを選択することや、オブジェクトの配列の先頭または末尾から指定された数のオブジェクトを選択することも可能です。
構文
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 パラメーターの値として設定されます。