Get-Process
ローカル コンピューターまたはリモート コンピューター上で実行されているプロセスを取得します。
構文
Get-Process
[[-Name] <String[]>]
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
[[-Name] <String[]>]
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-Id <Int32[]>
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-Id <Int32[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
[-IncludeUserName]
[<CommonParameters>]
Get-Process
-InputObject <Process[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
説明
Get-Process
コマンドレットは、ローカル コンピューターまたはリモート コンピューター上のプロセスを取得します。
パラメーターがない場合、このコマンドレットはローカル コンピューター上のすべてのプロセスを取得します。 また、プロセス名またはプロセス ID (PID) で特定のプロセスを指定したり、パイプラインを介してプロセス オブジェクトをこのコマンドレットに渡したりすることもできます。
既定では、このコマンドレットはプロセスに関する詳細情報を含むプロセス オブジェクトを返し、プロセスを開始および停止できるメソッドをサポートします。 また、 Get-Process
コマンドレットのパラメーターを使用して、プロセスで実行されるプログラムのファイル バージョン情報を取得し、プロセスが読み込んだモジュールを取得することもできます。
例
例 1: ローカル コンピューター上のすべてのアクティブなプロセスの一覧を取得する
Get-Process
このコマンドは、ローカル コンピューターで実行されているすべてのアクティブなプロセスの一覧を取得します。 各列の定義については、「 Notes 」セクションを参照してください。
例 2: 1 つ以上のプロセスに関して使用可能なすべてのデータを取得する
Get-Process winword, explorer | Format-List *
このコマンドは、コンピューター上の Winword プロセスと Explorer プロセスに関して利用可能なすべてのデータを取得します。 Name パラメーターを使用してプロセスを指定しますが、省略可能なパラメーター名は省略されます。 パイプライン演算子 (|
) は、データを Format-List
コマンドレットに渡します。このコマンドレットには、Winword および Explorer プロセス オブジェクトの使用可能なすべてのプロパティ (*
) が表示されます。
プロセスをプロセス ID で指定することもできます。 たとえば、Get-Process -Id 664, 2060
です。
例 3: 指定したサイズより大きいワーキング セットを持つすべてのプロセスを取得する
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
このコマンドは、ワーキング セットが 20 MB を超えているプロセスをすべて取得します。 Get-Process
コマンドレットを使用して、実行中のすべてのプロセスを取得します。 パイプライン演算子 (|
) は、 Where-Object
コマンドレットにプロセス オブジェクトを渡します。 WorkingSet プロパティの値が 20,000,000 バイトを超えるオブジェクトのみを選択します。
WorkingSet は、プロセス オブジェクトの多くのプロパティの 1 つです。 すべてのプロパティを表示するには、「 Get-Process | Get-Member
」と入力します。 既定では、既定の表示がキロバイト単位やメガバイト単位であっても、サイズに関するプロパティの値はすべてバイト単位で表されます。
例 4: 優先順位に基づいてグループ内のコンピューター上のプロセスを一覧表示する
$A = Get-Process
$A | Get-Process | Format-Table -View priority
これらのコマンドを実行すると、コンピューター上のプロセスが優先度クラスに基づきグループ分けされます。 最初のコマンドは、コンピューター上のすべてのプロセスを取得し、 $A
変数に格納します。
2 番目のコマンドは、$A
変数に格納されている Process オブジェクトを Get-Process
コマンドレットにパイプし、Format-Table
コマンドレットにパイプします。このコマンドレットは、Priority ビューを使用してプロセスを書式設定します。
Priority ビュー、およびその他のビューは、PowerShell ホーム ディレクトリ ($pshome
) の PS1XML フォーマット ファイルで定義されます。
例 5: 標準の Get-Process 出力表示にプロパティを追加する
Get-Process powershell | Format-Table `
@{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
@{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
@{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
@{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
@{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
Id, ProcessName, StartTime -AutoSize
NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName StartTime
------ ----- ----- ----- ------ -- ----------- ---------
143 239540 259384 2366162 22.73 12720 powershell 12/5/2022 3:21:51 PM
114 61776 104588 2366127 11.45 18336 powershell 12/5/2022 7:30:53 AM
156 77924 82060 2366185 10.47 18812 powershell 12/5/2022 7:30:52 AM
85 48216 115192 2366074 1.14 24428 powershell 12/8/2022 9:14:15 AM
この例では、ローカル コンピューターからプロセスを取得します。 取得したプロセスは、標準のGet-Process
出力表示に StartTime プロパティを追加するFormat-Table
コマンドにパイプされます。
例 6: プロセスのバージョン情報を取得する
Get-Process powershell -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
6.1.6713.1 6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
このコマンドでは、 FileVersionInfo パラメーターを使用して、PowerShell プロセスのメイン モジュールである powershell.exe
ファイルのバージョン情報を取得します。
Windows Vista 以降のバージョンの Windows で所有していないプロセスでこのコマンドを実行するには、 管理者として実行 オプションを使用して PowerShell を開く必要があります。
例 7: 指定されたプロセスで読み込まれたモジュールを取得する
Get-Process SQL* -Module
このコマンドは、 Module パラメーターを使用して、プロセスによって読み込まれたモジュールを取得します。
このコマンドは、 SQL
で始まる名前を持つプロセスのモジュールを取得します。
所有していないプロセスを使用して Windows Vista 以降のバージョンの Windows でこのコマンドを実行するには、 管理者として実行 オプションを使用して PowerShell を起動する必要があります。
例 8: プロセスの所有者を検索する
Get-Process pwsh -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01\user01 powershell
$p = Get-WmiObject Win32_Process -Filter "name='powershell.exe'"
$p.GetOwner()
__GENUS : 2
__CLASS : __PARAMETERS
__SUPERCLASS :
__DYNASTY : __PARAMETERS
__RELPATH :
__PROPERTY_COUNT : 3
__DERIVATION : {}
__SERVER :
__NAMESPACE :
__PATH :
Domain : DOMAIN01
ReturnValue : 0
User : user01
最初のコマンドは、プロセスの所有者を見つける方法を示しています。 IncludeUserName パラメーターには、管理者特権 (管理者として実行) が必要です。 出力により、所有者が Domain01\user01
であることが示されます。
2 番目と 3 番目のコマンドは、プロセスの所有者を見つけるもう 1 つの方法です。
2 番目のコマンドでは、 Get-WmiObject
を使用して PowerShell プロセスを取得します。
$p
変数に保存されます。
3 番目のコマンドでは、 GetOwner メソッドを使用して、 $p
のプロセスの所有者を取得します。 出力により、所有者が Domain01\user01
であることが示されます。
例 9: 自動変数を使用して、現在のセッションをホストしているプロセスを識別する
Get-Process powershell
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
308 26 52308 61780 567 3.18 5632 powershell
377 26 62676 63384 575 3.88 5888 powershell
Get-Process -Id $PID
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
396 26 56488 57236 575 3.90 5888 powershell
これらのコマンドは、 $PID
自動変数を使用して、現在の PowerShell セッションをホストしているプロセスを識別する方法を示しています。 このメソッドを使用すると、ホスト プロセスと、停止または終了する可能性がある他の PowerShell プロセスを区別できます。
最初のコマンドは、現在のセッションのすべての PowerShell プロセスを取得します。
2 番目のコマンドは、現在のセッションをホストしている PowerShell プロセスを取得します。
例 10: メイン ウィンドウ タイトルを持つすべてのプロセスを取得し、テーブルに表示する
Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize
このコマンドは、メイン ウィンドウ タイトルを持つすべてのプロセスを取得し、プロセス ID とプロセス名の表形式で表示します。
mainWindowTitle プロパティは、Get-Process
が返す Process オブジェクトの便利なプロパティの 1 つにすぎません。 すべてのプロパティを表示するには、 Get-Process
コマンドの結果を Get-Member
コマンドレット Get-Process | Get-Member
にパイプします。
パラメーター
-ComputerName
このコマンドレットがアクティブなプロセスを取得するコンピューターを指定します。 既定値はローカル コンピューターです。
1 台以上のコンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名 (FQDN) を入力します。 ローカル コンピューターを指定するには、コンピューター名、ドット (.
)、または localhost
を入力します。
このパラメーターは、Windows PowerShell リモート処理に依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、このコマンドレットの ComputerName パラメーターを使用できます。
型: | String[] |
Aliases: | Cn |
配置: | Named |
規定値: | Local computer |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-FileVersionInfo
このコマンドレットは、プロセスで実行されるプログラムのファイル バージョン情報を取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、 Run as administrator オプションを使用して PowerShell を開く必要があります。
Get-Process
コマンドレットの FileVersionInfo パラメーターと ComputerName パラメーターを同じコマンドで使用することはできません。
リモート コンピューター上のプロセスのファイル バージョン情報を取得するには、 Invoke-Command
コマンドレットを使用します。
このパラメーターの使用は、各プロセス オブジェクトの MainModule.FileVersionInfo プロパティを取得することと同じです。 このパラメーターを使用すると、 Get-Process
はプロセス オブジェクトではなく、 FileVersionInfo オブジェクト System.Diagnostics.FileVersionInfo を返します。 そのため、コマンドの出力を、 Stop-Process
などのプロセス オブジェクトを必要とするコマンドレットにパイプすることはできません。
型: | SwitchParameter |
Aliases: | FV, FVI |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Id
プロセス ID (PID) を使用して、プロセスを 1 つ以上指定します。 複数の ID を指定するには、ID をコンマで区切ります。 プロセスの PID を検索するには、「 Get-Process
」と入力します。
型: | Int32[] |
Aliases: | PID |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-IncludeUserName
Process オブジェクトの UserName 値がコマンドの結果と共に返されることを示します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
1 つまたは複数のプロセス オブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。
型: | Process[] |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Module
このコマンドレットは、プロセスによって読み込まれたモジュールを取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、 Run as administrator オプションを使用して PowerShell を開く必要があります。
リモート コンピューター上のプロセスによって読み込まれたモジュールを取得するには、 Invoke-Command
コマンドレットを使用します。
このパラメーターは、各プロセス オブジェクトの Modules プロパティを取得することと同じです。 このパラメーターを使用すると、このコマンドレットはプロセス オブジェクトではなく、 ProcessModule オブジェクト System.Diagnostics.ProcessModule を返します。 そのため、コマンドの出力を、 Stop-Process
などのプロセス オブジェクトを必要とするコマンドレットにパイプすることはできません。
同じコマンドで Module パラメーターと FileVersionInfo パラメーターの両方を使用すると、このコマンドレットは、すべてのモジュールのファイル バージョンに関する情報を含む FileVersionInfo オブジェクトを返します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Name
プロセス名を使用してプロセスを 1 つ以上指定します。 複数のプロセス名をコンマで区切って指定することも、ワイルドカード文字を使用することもできます。 パラメーター名 (Name
) は省略可能です。
型: | String[] |
Aliases: | ProcessName |
配置: | 0 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
入力
このコマンドレットには、プロセス オブジェクトをパイプ処理できます。
出力
既定では、このコマンドレットは System.Diagnostics.Process オブジェクトを返します。
FileVersionInfo パラメーターを使用すると、このコマンドレットは FileVersionInfo オブジェクトを返します。
Module パラメーターを使用し、FileVersionInfo パラメーターを指定しない場合、このコマンドレットは ProcessModule オブジェクトを返します。
メモ
Windows PowerShell には、 Get-Process
の次のエイリアスが含まれています。
gps
ps
64 ビット バージョンの Windows を実行しているコンピューターでは、64 ビット バージョンの PowerShell は 64 ビット プロセス モジュールのみを取得し、PowerShell の 32 ビット バージョンでは 32 ビット プロセス モジュールのみを取得します。
リモート コンピューターからプロセス情報を取得するには、 Invoke-Command
コマンドレットを使用します。 詳細については、「 Invoke-Command」を参照してください。
PowerShell では、Windows Management Instrumentation (WMI) Win32_Process オブジェクトのプロパティとメソッドを使用できます。 詳細については、 Win32_Processを参照してください。
既定では、次の欄を含む表としてプロセスが表示されます。 プロセス オブジェクトのすべてのプロパティの詳細については、「 Process プロパティ」を参照してください。
- ハンドル: プロセスが開いたハンドルの数。
- NPM(K): プロセスで使用されている非ページ メモリの量 (KB 単位)。
- PM(K): プロセスが使用しているページング可能メモリの量 (KB 単位)。
- WS(K): プロセスのワーキング セットのサイズ (KB 単位)。 ワーキング セットは、プロセスが最近参照したメモリのページで構成されます。
- VM(M): プロセスが使用している仮想メモリの量 (メガバイト単位)。 仮想メモリには、ディスク上のページング ファイルの記憶域が含まれます。
- CPU : プロセスがすべてのプロセッサで使用したプロセッサ時間 (秒単位)。
- ID: プロセスのプロセス ID (PID)。
- ProcessName: プロセスの名前。 プロセスに関連する概念の説明については、ヘルプとサポート センターにある用語集と、タスク マネージャーのヘルプを参照してください。
StartTimeやPriorityなど、Format-Table
で使用できるプロセスの組み込みの代替ビューを使用することもできます。また、独自のビューを設計することもできます。
関連リンク
PowerShell