次の方法で共有


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-CimInstanceInvoke-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-ProcessProcess オブジェクトではなく 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 オブジェクトのPathMainModuleなどのプロパティが$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: プロセスの名前。

StartTimePriority などのFormat-Tableで使用できるプロセス オブジェクトには、組み込みの代替ビューを使用できます。 独自のビューをデザインすることもできます。

使用可能なすべての Process オブジェクト メンバーの説明については、「 プロセスプロパティプロセスメソッド」を参照してください。