Get-Process
ローカル コンピューターで実行されているプロセスを取得します。
構文
Name (既定)
Get-Process
[[-Name] <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
NameWithUserName
Get-Process
[[-Name] <String[]>]
-IncludeUserName
[<CommonParameters>]
Id
Get-Process
-Id <Int32[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
IdWithUserName
Get-Process
-Id <Int32[]>
-IncludeUserName
[<CommonParameters>]
InputObject
Get-Process
-InputObject <Process[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
InputObjectWithUserName
Get-Process
-InputObject <Process[]>
-IncludeUserName
[<CommonParameters>]
説明
Get-Process
コマンドレットは、ローカル コンピューター上のプロセスを取得します。
パラメーターがない場合、このコマンドレットはローカル コンピューター上のすべてのプロセスを取得します。 また、プロセス名またはプロセス ID (PID) または System.Diagnostics.Process オブジェクトをこのコマンドレットにパイプ処理することによって、特定のプロセスを指定することもできます。
既定では、このコマンドレットはプロセスに関する詳細情報を持つ Process オブジェクトを返し、制御できるメソッドをサポートします。 パラメーターを使用すると、このコマンドレットによって返される情報の種類を変更できます。
- モジュール: プロセスに読み込まれた各モジュールの情報を取得します。
- FileVersionInfo: プロセスのメイン モジュールのファイル バージョン情報を取得します。
注
モジュールは、プロセスに読み込まれた実行可能ファイルまたはダイナミック リンク ライブラリ (DLL) です。 プロセスには 1 つ以上のモジュールがあります。 メイン モジュールは、最初にプロセスを開始するために使用されるモジュールです。 詳細については、「 ProcessModule クラス」を参照してください。
例
例 1: ローカル コンピューターで実行中のすべてのプロセスの一覧を取得する
Get-Process
このコマンドは、ローカル コンピューター上で実行中のすべてのプロセスの一覧を取得します。 各表示列の定義については、「 NOTES 」セクションを参照してください。
Process オブジェクトのすべてのプロパティを表示するには、Get-Process | Get-Member
を使用します。 既定では、PowerShell では、KB (K) やメガバイト (M) などの単位を使用して特定のプロパティ値が表示されます。 メンバー アクセス演算子 (.
) でアクセスした場合の実際の値はバイト単位です。
例 2: 1 つ以上のプロセスに関する詳細情報を表示する
Get-Process winword, explorer | Format-List *
このパイプラインには、コンピューター上の winword
プロセスと explorer
プロセスに関する詳細情報が表示されます。
Name パラメーターを使用してプロセスを指定しますが、省略可能なパラメーター名は省略されます。 パイプライン演算子 (|
) は、 Process オブジェクトを Format-List
コマンドレットにパイプします。このコマンドレットには、使用可能なすべてのプロパティ (*
) と各オブジェクトの値が表示されます。
プロセス ID でプロセスを識別することもできます。 たとえば、Get-Process -Id 664, 2060
です。
例 3: 指定したサイズより大きいワーキング セットを持つすべてのプロセスを取得する
Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB
Get-Process
コマンドレットは、実行中のプロセスを返します。 出力は、20,971,520 バイトを超える WorkingSet 値を持つオブジェクトを選択するWhere-Object
コマンドレットにパイプされます。
最初の例では、Where-Object
はスクリプト ブロックを使用して、各 Process オブジェクトの WorkingSet プロパティを比較します。 2 番目の例では、 Where-Object
コマンドレットは簡略化された構文を使用して WorkingSet プロパティを比較します。 この場合、 -GT
はパラメーターであり、比較演算子ではありません。 2 番目の例では、20971520
の代わりに、数値リテラル サフィックスも使用します。 PowerShell では、 MB
はメビバイト (MiB) 乗数を表します。
20MB
は 20,971,520 バイトです。
例 4: 優先順位に基づいてコンピューター上のプロセスをグループに表示する
$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority
これらのコマンドは、 優先度クラスに基づいて、コンピューター上のプロセスをグループで表示します。 最初のコマンドは、コンピューター上のすべてのプロセスを取得し、 $processes
変数に格納します。
2 番目のコマンドは、$processes
変数に格納されている Process オブジェクトを Sort-Object
コマンドレットにパイプし、次に Format-Table
コマンドレットにパイプし、優先順位ビューを使用してプロセスを書式設定します。
例 5: 既定の "Get-Process" 出力表示にプロパティを追加する
Get-Process -Name pwsh | Format-Table -Property @(
@{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
@{ Name = 'PM(M)'; Expression = { [int] ($_.PM / 1MB) } }
@{ Name = 'WS(M)'; Expression = { [int] ($_.WS / 1MB) } }
@{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
'Id'
@{ Name = 'SI'; Expression = 'SessionId' }
'ProcessName'
'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName StartTime
------ ----- ----- ------ -- -- ----------- ---------
84 46 79 18.297 3188 1 pwsh 4/14/2025 10:40:10 AM
66 30 90 4.328 4640 1 pwsh 4/13/2025 3:33:50 PM
66 30 90 4.516 9204 1 pwsh 4/14/2025 9:54:27 AM
次の使用例は、ローカル コンピューターからプロセスを取得し、各 Process オブジェクトを Format-Table
コマンドレットにパイプします。
Format-Table
は、プロパティ名と計算プロパティを組み合わせ、Process オブジェクトの既定の出力表示を再作成します。 表示には、既定の表示に存在しない追加の StartTime プロパティが含まれています。
例 6: プロセスのバージョン情報を取得する
Get-Process -Name pwsh -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
7.5.0 SHA: 99da… 7.5.0.500 C:\Program Files\PowerShell\7\pwsh.exe
このコマンドは、 FileVersionInfo パラメーターを使用して、 pwsh
プロセスのメイン モジュールのファイル バージョン情報を取得します。 メイン モジュールはプロセスの開始に使用されるファイルです。この場合は pwsh.exe
。
Windows Vista 以降のバージョンの Windows で所有していないプロセスでこのコマンドを使用するには、管理者特権 (管理者として実行) を使用して PowerShell を実行する必要があります。
例 7: 指定されたプロセスで読み込まれたモジュールを取得する
Get-Process -Name SQL* -Module
このコマンドでは、 Module パラメーターを使用して、名前が SQL
で始まるすべてのプロセスによって読み込まれたモジュールを取得します。
Windows Vista 以降のバージョンの Windows で所有していないプロセスでこのコマンドを使用するには、管理者特権 (管理者として実行) を使用して PowerShell を実行する必要があります。
例 8: プロセスの所有者を検索する
Get-Process -Name pwsh -IncludeUserName
WS(M) CPU(s) Id UserName ProcessName
----- ------ -- -------- -----------
46.53 21.70 3188 DOMAIN01\user01 pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
Invoke-CimMethod -MethodName GetOwner
Domain ReturnValue User PSComputerName
------ ----------- ---- --------------
DOMAIN01 0 user01
最初のコマンドは、プロセスの所有者を取得する方法を示しています。 出力により、所有者が DOMAIN01\user01
であることが示されます。
2 番目のパイプラインは、 Get-CimInstance
と Invoke-CimMethod
を使用してプロセスの所有者を取得する別の方法を示しています。 フィルター を 持つWin32_Process クラスは pwsh
プロセスを取得し、呼び出された GetOwner()
メソッドはプロセスの Domain と User に関する情報を返 します。 この方法は Windows でのみ使用でき、管理者特権は必要ありません。
例 9: 自動変数を使用して、現在のセッションをホストしているプロセスを識別する
Get-Process -Name pwsh
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 105.95 4.33 1192 10 pwsh
79 83.81 117.61 2.16 10580 10 pwsh
Get-Process -Id $PID
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 77.53 4.39 1192 10 pwsh
これらのコマンドは、$PID
自動変数を使用して、現在の PowerShell セッションをホストしているプロセスを識別する方法を示しています。 このメソッドを使用すると、ホスト プロセスと、制御する可能性がある他の pwsh
プロセスを区別できます。
最初のコマンドは、実行中のすべての pwsh
プロセスを取得します。 2 番目のコマンドは、現在のセッションをホストしている pwsh
プロセスを取得します。
例 10: メイン ウィンドウ タイトルを持つすべてのプロセスを取得し、テーブルに表示する
Get-Process |
Where-Object -Property MainWindowTitle |
Format-Table -Property Id, Name, MainWindowTitle -AutoSize
このパイプラインは、メイン ウィンドウ タイトルを持つすべてのプロセスを取得し、プロセス ID と名前を持つテーブルに表示します。
MainWindowTitle は、Get-Process
返される Diagnostics.Process オブジェクト型の多くの便利なプロパティの 1 つです。 すべてのプロパティを表示するには、 Get-Process | Get-Member
を使用します。
パラメーター
-FileVersionInfo
このコマンドレットは、プロセスで実行されるプログラムのファイル バージョン情報を取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、管理者特権 (管理者として実行) で PowerShell を実行する必要があります。
このパラメーターの使用は、各 Process オブジェクトの MainModule.FileVersionInfo プロパティにアクセスする場合と同じです。 このパラメーターを使用すると、Get-Process
は Process オブジェクトではなく FileVersionInfo オブジェクトを返します。 このパラメーターを使用して生成された出力を、Stop-Process
などの Process オブジェクトを必要とするコマンドレットにパイプすることはできません。
パラメーターのプロパティ
型: | SwitchParameter |
規定値: | False |
ワイルドカードのサポート: | False |
DontShow: | False |
Aliases: | FV, FVI |
パラメーター セット
Name
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
Id
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
InputObject
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-Id
プロセス ID (PID) で 1 つ以上のプロセスを指定します。 複数の ID をコンマで区切って指定できます。 プロセスの PID を取得するには、 Get-Process
を使用します。 現在の PowerShell セッションの PID を取得するには、 $PID
を使用します。
パラメーターのプロパティ
型: | Int32[] |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
Aliases: | PID |
パラメーター セット
Id
配置: | Named |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
IdWithUserName
配置: | Named |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
-IncludeUserName
このコマンドが返された各 Process オブジェクトに UserName プロパティを追加することを示します。
パラメーターのプロパティ
型: | SwitchParameter |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
NameWithUserName
配置: | Named |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
IdWithUserName
配置: | Named |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
InputObjectWithUserName
配置: | Named |
必須: | True |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-InputObject
1 つ以上の Process オブジェクトを指定します。 オブジェクトを含む変数、またはオブジェクトを取得するコマンドまたは式を使用します。
パラメーターのプロパティ
型: | Process[] |
規定値: | None |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
InputObject
配置: | Named |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
InputObjectWithUserName
配置: | Named |
必須: | True |
パイプラインからの値: | True |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-Module
このコマンドレットが、プロセスが読み込んだモジュールを取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、管理者特権 (管理者として実行) で PowerShell を実行する必要があります。
このパラメーターの使用は、各 Process オブジェクトの Modules プロパティにアクセスする場合と同じです。
このパラメーターを使用すると、 Get-Process
は Process オブジェクトではなく ProcessModuleオブジェクトを 返します。 このパラメーターを使用して生成された出力を、Stop-Process
などの Process オブジェクトを必要とするコマンドレットにパイプすることはできません。
Module パラメーターと FileVersionInfo パラメーターの両方を一緒に使用すると、このコマンドレットは FileVersionInfo オブジェクトを返し、すべてのモジュールのファイル バージョンに関する情報を返します。
パラメーターのプロパティ
型: | SwitchParameter |
規定値: | False |
ワイルドカードのサポート: | False |
DontShow: | False |
パラメーター セット
Name
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
Id
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
InputObject
配置: | Named |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | False |
残りの引数からの値: | False |
-Name
プロセス名で 1 つ以上のプロセスを指定します。 複数のプロセス名をコンマで区切って指定し、ワイルドカード文字を使用できます。
-Name
パラメーターの使用は省略可能です。
パラメーターのプロパティ
型: | String[] |
規定値: | None |
ワイルドカードのサポート: | True |
DontShow: | False |
Aliases: | ProcessName |
パラメーター セット
Name
配置: | 0 |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
NameWithUserName
配置: | 0 |
必須: | False |
パイプラインからの値: | False |
プロパティ名別のパイプラインからの値: | True |
残りの引数からの値: | False |
CommonParameters
このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。
入力
Process
Process オブジェクトをこのコマンドレットにパイプできます。
出力
Process
既定では、このコマンドレットは System.Diagnostics.Process オブジェクト 返します。
FileVersionInfo
FileVersionInfo パラメーターを使用すると、このコマンドレットは System.Diagnostics.FileVersionInfo オブジェクトを返します。
ProcessModule
FileVersionInfo パラメーターを指定せずに Module パラメーターを使用すると、このコマンドレットは System.Diagnostics.ProcessModule オブジェクトを返します。
メモ
PowerShell には、Get-Process
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
gps
- ウィンドウズ:
ps
64 ビット Windows を実行しているコンピューターでは、64 ビット バージョンの PowerShell がメイン モジュールと 64 ビット プロセス モジュールを取得します。 PowerShell の 32 ビット バージョンでは、32 ビット プロセス モジュールのみが取得されます。
Warnung
Get-Process
を使用して 32 ビット バージョンの PowerShell で 64 ビット プロセスを取得すると、返される Process オブジェクトのPath
やMainModule
などのプロパティが$null
。 64 ビット バージョンの PowerShell または Win32_Process クラスを使用する必要があります。
リモート コンピューターからプロセス情報を取得するには、Invoke-Command
コマンドレットを使用します。 詳細については、「Invoke-Command」を参照してください。
Windows では、Get-Process
の代わりに、PowerShell で Windows Management Instrumentation (WMI) Win32_Process クラスを使用できます。 詳細については、以下を参照してください。
Process オブジェクトの既定の表示は、次の列を含むテーブル ビューです。
- NPM(K): プロセスで使用されている非ページ メモリの量 (KB 単位)。
- PM(M): プロセスが使用しているページング可能メモリの量 (メガバイト単位)。
- WS(M): プロセスのワーキング セットのサイズ (メガバイト単位)。 ワーキング セットは、プロセスによって最近参照されたメモリのページで構成されます。
- CPU: プロセスがすべてのプロセッサで使用したプロセッサ時間 (秒単位)。
- ID: プロセスのプロセス ID (PID)。
- SI: プロセスのセッション ID。
- ProcessName: プロセスの名前。
StartTime や Priority などのFormat-Table
で使用できるプロセス オブジェクトには、組み込みの代替ビューを使用できます。 独自のビューをデザインすることもできます。
使用可能なすべての Process オブジェクト メンバーの説明については、「 プロセスプロパティ と プロセスメソッド」を参照してください。