次の方法で共有


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 プロセス オブジェクトとエクスプローラー プロセス オブジェクト * 使用可能なすべてのプロパティを表示します。

プロセス 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 オブジェクトを Get-Process コマンドレットにパイプし、Format-Table コマンドレットにパイプします。このコマンドレットは、Priority ビューを使用してプロセスを書式設定します。

Priority ビューとその他のビューは、PowerShell ホーム ディレクトリ ($pshome) の PS1XML フォーマット ファイルで定義されます。

例 5: 標準の Get-Process 出力表示にプロパティを追加する

Get-Process powershell -ComputerName S1, localhost | 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, MachineName, ProcessName -AutoSize

NPM(K) PM(K) WS(K) VM(M) CPU(s)   Id MachineName ProcessName
------ ----- ----- ----- ------   -- ----------- -----------
     6 23500 31340   142 1.70   1980 S1          powershell
     6 23500 31348   142 2.75   4016 S1          powershell
    27 54572 54520   576 5.52   4428 localhost   powershell

この例では、ローカル コンピューターとリモート コンピューター (S1) からプロセスを取得します。 取得したプロセスは、標準の Format-Table 出力表示に MachineName プロパティを追加する Get-Process コマンドにパイプ処理されます。

例 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: プロセスの所有者を検索する

PS C:\> Get-Process powershell -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 オブジェクトの便利なプロパティの 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 では、所有していないプロセスでこのパラメーターを使用するには、管理者として実行 オプションを使用して PowerShell を開く必要があります。

コマンドレットの FileVersionInfo パラメーターと Get-Process パラメーターを同じコマンドで使用することはできません。

リモート コンピューター上のプロセスのファイル バージョン情報を取得するには、Invoke-Command コマンドレットを使用します。

このパラメーターの使用は、各プロセス オブジェクト MainModule.FileVersionInfo プロパティを取得することと同じです。 このパラメーターを使用すると、Get-Process は、プロセス オブジェクトではなく、System.Diagnostics.FileVersionInfo 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 では、所有していないプロセスでこのパラメーターを使用するには、管理者として実行 オプションを使用して PowerShell を開く必要があります。

リモート コンピューター上のプロセスによって読み込まれたモジュールを取得するには、Invoke-Command コマンドレットを使用します。

このパラメーターは、各プロセス オブジェクトの Modules プロパティを取得することと同じです。 このパラメーターを使用すると、このコマンドレットは、プロセス オブジェクトではなく、System.Diagnostics.ProcessModule オブジェクト ProcessModule を返します。 そのため、コマンドの出力を、Stop-Processなどのプロセス オブジェクトを必要とするコマンドレットにパイプすることはできません。

同じコマンドで Module パラメーターと FileVersionInfo パラメーターの両方を使用すると、このコマンドレットは、すべてのモジュールのファイル バージョンに関する情報を含む FileVersionInfo オブジェクトを返します。

型:SwitchParameter
配置:Named
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Name

プロセス名で 1 つ以上のプロセスを指定します。 複数のプロセス名を (コンマで区切って) 入力し、ワイルドカード文字を使用できます。 パラメータ名 ("Name") はオプションです。

型:String[]
Aliases:ProcessName
配置:0
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:True

入力

Process

このコマンドレットには、プロセス オブジェクトをパイプ処理できます。

出力

System.Diagnostics.Process, System.Diagnostics.FileVersionInfo, System.Diagnostics.ProcessModule

既定では、このコマンドレットは System.Diagnostics.Process オブジェクト 返します。 FileVersionInfo パラメーターを使用すると、System.Diagnostics.FileVersionInfo オブジェクトが返されます。 FileVersionInfo パラメーターを指定せずに Module パラメーターを使用すると、System.Diagnostics.ProcessModule オブジェクトが返されます。

メモ

  • このコマンドレットは、組み込みのエイリアスである ps と gps で参照することもできます。 詳細については、about_Aliasesを参照してください。
  • 64 ビット バージョンの Windows を実行しているコンピューターでは、64 ビット バージョンの PowerShell は 64 ビット プロセス モジュールのみを取得し、PowerShell の 32 ビット バージョンでは 32 ビット プロセス モジュールのみを取得します。
  • Windows Management Instrumentation (WMI) Win32_Process オブジェクトのプロパティとメソッドを PowerShell で使用できます。 詳細については、「 Get-WmiObject と WMI SDK」を参照してください。
  • プロセスの既定の表示は、次の列を含むテーブルです。 プロセス オブジェクトのすべてのプロパティの詳細については、MSDN ライブラリの 「プロセス プロパティ 」を参照してください。
    • ハンドル: プロセスが開いたハンドルの数。
    • NPM(K): プロセスが使用している非ページメモリの量 (キロバイト単位)。
    • PM(K): プロセスが使用しているページング可能なメモリの量 (キロバイト単位)。
    • WS(K): プロセスのワーキング セットのサイズ (キロバイト単位)。 ワーキング セットは、プロセスによって最近参照されたメモリのページで構成されます。
    • VM(M): プロセスが使用している仮想メモリの量 (メガバイト単位)。 仮想メモリには、ディスク上のページング ファイル内のストレージが含まれます。
    • CPU(s): プロセスがすべてのプロセッサで使用したプロセッサ時間 (秒単位)。
    • ID: プロセスのプロセス ID (PID)。
    • ProcessName: プロセスの名前。 プロセスに関連する概念の説明については、ヘルプおよびサポート センターの用語集とタスク マネージャーのヘルプを参照してください。
  • また、Format-TablePriorityなど、で使用できるプロセスの組み込みの代替ビューを使用して、独自のビューを設計することもできます。