Get-Process
ローカル コンピューターまたはリモート コンピューターで実行されているプロセスを取得します。
構文
Name (既定)
Get-Process
[[-Name] <String[]>]
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
NameWithUserName
Get-Process
[[-Name] <String[]>]
[-IncludeUserName]
[<CommonParameters>]
IdWithUserName
Get-Process
-Id <Int32[]>
[-IncludeUserName]
[<CommonParameters>]
Id
Get-Process
-Id <Int32[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
InputObjectWithUserName
Get-Process
-InputObject <Process[]>
[-IncludeUserName]
[<CommonParameters>]
InputObject
Get-Process
-InputObject <Process[]>
[-ComputerName <String[]>]
[-Module]
[-FileVersionInfo]
[<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 コマンドレットにパイプし、優先順位ビューを使用してプロセスを書式設定します。
優先度ビューとその他のビューは、PowerShell ホーム ディレクトリ ($PSHOME) の.ps1xml形式ファイルで定義されます。
例 5: 既定の "Get-Process" 出力表示にプロパティを追加する
Get-Process -Name powershell | Format-Table -Property @(
'Handles'
@{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
@{ Name = 'PM(K)'; Expression = { [int] ($_.PM / 1KB) } }
@{ Name = 'WS(K)'; Expression = { [int] ($_.WS / 1KB) } }
@{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
'Id'
@{ Name = 'SI'; Expression = 'SessionId' }
'ProcessName'
'StartTime'
) -AutoSize
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName StartTime
------- ------ ----- ----- ------ -- -- ----------- ---------
655 34 69424 83424 2.20 4240 1 powershell 4/14/2025 10:40:10 AM
572 36 68768 57260 7.41 4968 1 powershell 4/13/2025 3:33:50 PM
405 26 38144 30340 1.80 8776 1 powershell 4/14/2025 9:54:27 AM
次の使用例は、ローカル コンピューターからプロセスを取得し、各 Process オブジェクトを Format-Table コマンドレットにパイプします。
Format-Tableは、プロパティ名と計算プロパティを組み合わせ、Process オブジェクトの既定の出力表示を再作成します。 表示には、既定の表示に存在しない追加の StartTime プロパティが含まれています。
例 6: プロセスのバージョン情報を取得する
Get-Process -Name powershell -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
10.0.19041.320 10.0.19041.32... C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
このコマンドは、 FileVersionInfo パラメーターを使用して、 powershell プロセスのメイン モジュールのファイル バージョン情報を取得します。 メイン モジュールはプロセスの開始に使用されるファイルです。この場合は powershell.exe。
Windows Vista 以降のバージョンの Windows で所有していないプロセスでこのコマンドを使用するには、管理者特権 (管理者として実行) を使用して PowerShell を実行する必要があります。
例 7: 指定されたプロセスで読み込まれたモジュールを取得する
Get-Process -Name SQL* -Module
このコマンドでは、 Module パラメーターを使用して、名前が SQL で始まるすべてのプロセスによって読み込まれたモジュールを取得します。
Windows Vista 以降のバージョンの Windows で所有していないプロセスでこのコマンドを使用するには、管理者特権 (管理者として実行) を使用して PowerShell を実行する必要があります。
例 8: プロセスの所有者を検索する
Get-Process -Name powershell -IncludeUserName
Handles WS(K) CPU(s) Id UserName ProcessName
------- ----- ------ -- -------- -----------
782 132080 2.08 2188 DOMAIN01\user01 powershell
Get-CimInstance -ClassName Win32_Process -Filter "name='powershell.exe'" |
Invoke-CimMethod -MethodName GetOwner
Domain ReturnValue User PSComputerName
------ ----------- ---- --------------
DOMAIN01 0 user01
最初のコマンドは、プロセスの所有者を取得する方法を示しています。
IncludeUserName パラメーターには、管理者特権 (管理者として実行) が必要です。 出力により、所有者が DOMAIN01\user01であることが示されます。
2 番目のパイプラインは、 Get-CimInstance と Invoke-CimMethodを使用してプロセスの所有者を取得する別の方法を示しています。 フィルター を 持つWin32_Process クラスは powershell プロセスを取得し、呼び出された GetOwner() メソッドはプロセスの Domain と User に関する情報を返 します。 この方法では、昇格されたユーザー権限は必要ありません。
例 9: 自動変数を使用して、現在のセッションをホストしているプロセスを識別する
Get-Process -Name powershell
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
561 44 47564 40740 6.48 2604 1 powershell
642 40 72040 24372 23.53 3576 1 powershel
Get-Process -Id $PID
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
647 40 72464 30716 23.67 3576 1 powershell
これらのコマンドは、$PID 自動変数を使用して、現在の PowerShell セッションをホストしているプロセスを識別する方法を示しています。 このメソッドを使用すると、ホスト プロセスと、制御する可能性がある他の powershell プロセスを区別できます。
最初のコマンドは、実行中のすべての powershell プロセスを取得します。 2 番目のコマンドは、現在のセッションをホストしている powershell プロセスを取得します。
例 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を使用します。
パラメーター
-ComputerName
このコマンドレットが実行中のプロセスを取得するコンピューターを指定します。 既定値はローカル コンピューターです。
1 台以上のコンピューターの NetBIOS 名、IP アドレス、または完全修飾ドメイン名 (FQDN) を指定します。 ローカル コンピューターを指定するには、コンピューター名、ドット (.)、または localhostを使用します。
このパラメーターは、Windows PowerShell リモート処理には依存しません。 コンピューターがリモート コマンドを実行するように構成されていない場合でも、このコマンドレットの ComputerName パラメーターを使用できます。
パラメーターのプロパティ
| 型: | String[] |
| 規定値: | Local computer |
| ワイルドカードのサポート: | False |
| DontShow: | False |
| Aliases: | Cn |
パラメーター セット
Name
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
Id
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
InputObject
| 配置: | Named |
| 必須: | False |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-FileVersionInfo
このコマンドレットは、プロセスで実行されるプログラムのファイル バージョン情報を取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、管理者特権 (管理者として実行) で PowerShell を実行する必要があります。
FileVersionInfo パラメーターと ComputerName パラメーターを一緒に使用することはできません。
リモート コンピューター上のプロセスのファイル バージョン情報を取得するには、Invoke-Command コマンドレットを使用します。
このパラメーターの使用は、各 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 |
パラメーター セット
IdWithUserName
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
Id
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | False |
| プロパティ名別のパイプラインからの値: | True |
| 残りの引数からの値: | False |
-IncludeUserName
このコマンドが返された各 Process オブジェクトに UserName プロパティを追加することを示します。
このパラメーターを使用するには、管理者特権 (管理者として実行) を使用して PowerShell を実行する必要があります。
パラメーターのプロパティ
| 型: | 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 |
パラメーター セット
InputObjectWithUserName
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
InputObject
| 配置: | Named |
| 必須: | True |
| パイプラインからの値: | True |
| プロパティ名別のパイプラインからの値: | False |
| 残りの引数からの値: | False |
-Module
このコマンドレットが、プロセスが読み込んだモジュールを取得することを示します。
Windows Vista 以降のバージョンの Windows では、所有していないプロセスでこのパラメーターを使用するには、管理者特権 (管理者として実行) で PowerShell を実行する必要があります。
リモート コンピューター上のプロセスによって読み込まれたモジュールを取得するには、 Invoke-Command コマンドレットを使用します。
このパラメーターの使用は、各 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 オブジェクトを返します。
メモ
Windows PowerShell には、Get-Processの次のエイリアスが含まれています。
gpsps
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」を参照してください。
Get-Processの代わりに、PowerShell で Windows Management Instrumentation (WMI) Win32_Process クラスを使用できます。 詳細については、以下を参照してください。
Process オブジェクトの既定の表示は、次の列を含むテーブル ビューです。
- ハンドル: プロセスが開いたハンドルの数。
- NPM(K): プロセスで使用されている非ページ メモリの量 (KB 単位)。
- PM(K): プロセスが使用しているページング可能なメモリの量 (KB 単位)。
- WS(K): プロセスのワーキング セットのサイズ (KB 単位)。 ワーキング セットは、プロセスによって最近参照されたメモリのページで構成されます。
- CPU: プロセスがすべてのプロセッサで使用したプロセッサ時間 (秒単位)。
- ID: プロセスのプロセス ID (PID)。
- SI: プロセスのセッション ID。
- ProcessName: プロセスの名前。
StartTime や Priority などのFormat-Tableで使用できるプロセス オブジェクトには、組み込みの代替ビューを使用できます。 独自のビューをデザインすることもできます。
使用可能なすべての Process オブジェクト メンバーの説明については、「 プロセスプロパティ と プロセスメソッド」を参照してください。