Stop-Process
実行中のプロセスを 1 つ以上停止します。
構文
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Stop-Process
コマンドレットは、1 つ以上の実行中のプロセスを停止します。 プロセス名またはプロセス ID (PID) でプロセスを指定するか、プロセス オブジェクトを Stop-Process
に渡すことができます。 Stop-Process
は、ローカル コンピューターで実行されているプロセスでのみ機能します。
Windows Vista 以降のバージョンの Windows オペレーティング システムでは、現在のユーザーが所有していないプロセスを停止するには、[管理者として実行] オプションを使用して PowerShell を起動する必要があります。 また、 Confirm パラメーターを指定しない限り、確認を求めるメッセージは表示されません。
例
例 1: プロセスのすべてのインスタンスを停止する
PS C:\> Stop-Process -Name "notepad"
このコマンドを実行すると、コンピューター上の Notepad プロセスのインスタンスがすべて停止されます。 メモ帳の各インスタンスは、独自のプロセスで実行されます。 Name パラメーターを使用してプロセスを指定します。これらはすべて同じ名前です。 Id パラメーターを使用して同じプロセスを停止する場合は、メモ帳の各インスタンスのプロセス ID を一覧表示する必要があります。
例 2: プロセスの特定のインスタンスを停止する
PS C:\> Stop-Process -Id 3952 -Confirm -PassThru
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):y
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
41 2 996 3212 31 3952 notepad
このコマンドを実行すると、Notepad プロセスの特定のインスタンスが停止されます。 プロセス ID 3952 を使用してプロセスを識別しています。 Confirm パラメーターは、プロセスを停止する前に、PowerShell にプロンプトを表示するように指示します。 プロンプトには ID にプロセス名が追加されているため、これがベスト プラクティスです。
PassThru パラメーターは、プロセス オブジェクトをフォーマッタに渡して表示します。 このパラメーターを指定しないと、 Stop-Process
コマンドの後には表示されません。
例 3: プロセスを停止し、停止したことを検出する
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
この一連のコマンドは、 Calc
プロセスを開始および停止し、停止したプロセスを検出します。
最初のコマンドは、電卓のインスタンスを開始します。
2 番目のコマンドでは、 Get-Process
を使用して、 Calc
プロセスを表すオブジェクトを取得し、 $p
変数に格納します。
3 番目のコマンドは、 Calc
プロセスを停止します。 InputObject パラメーターを使用して、オブジェクトをStop-Process
に渡します。
最後のコマンドは、コンピューター上の、以前は実行中で現在は停止しているすべてのプロセスを取得します。 Get-Process
を使用して、コンピューター上のすべてのプロセスを取得します。 パイプライン演算子 (|
) は、結果を Where-Object
コマンドレットに渡します。このコマンドレットは、 HasExited プロパティの値が$Trueされるコマンドレットを選択します。 HasExited は、プロセス オブジェクトの 1 つのプロパティにすぎません。 すべてのプロパティを検索するには、「 Get-Process | Get-Member
」と入力します。
例 4: 現在のユーザーが所有していないプロセスを停止する
PS> Get-Process -Name "lsass" | Stop-Process
Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ Get-Process -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process
Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS>
これらのコマンドは、 Force を使用して、ユーザーが所有していないプロセスを停止した場合の効果を示します。
最初のコマンドでは、 Get-Process
を使用して Lsass プロセスを取得します。 パイプライン演算子は、プロセスを停止するために Stop-Process
にプロセスを送信します。 サンプル出力に示すように、このプロセスはコンピューター上の Administrator グループのメンバーのみが停止できるため、最初のコマンドは Access 拒否メッセージで失敗します。
[管理者として実行] オプションを使用して PowerShell を開き、コマンドを繰り返すと、確認を求めるメッセージが表示されます。
2 番目のコマンドは、プロンプトを抑制するために Force を指定します。 その結果、プロセスは確認なしで停止されます。
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
確認メッセージを表示せずに、指定されたプロセスを停止します。 既定では、 Stop-Process
、現在のユーザーが所有していないプロセスを停止する前に確認を求められます。
プロセスの所有者を見つけるには、 Get-CimInstance
コマンドレットを使用してプロセスを表す Win32_Process オブジェクトを取得し、オブジェクトの GetOwner メソッドを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Id
停止するプロセスのプロセス ID を指定します。 複数の ID を指定するには、ID をコンマで区切ります。 プロセスの PID を検索するには、「 Get-Process
」と入力します。
型: | Int32[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-InputObject
停止するプロセス オブジェクトを指定します。 オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。
型: | Process[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Name
停止するプロセスのプロセス名を指定します。 複数のプロセス名をコンマで区切って入力することも、ワイルドカード文字を使用することもできます。
型: | String[] |
Aliases: | ProcessName |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-PassThru
プロセスを表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
このコマンドレットには、プロセス オブジェクトをパイプ処理できます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットは停止したプロセスを表す Process オブジェクトを返します。
メモ
Windows PowerShell には、 Stop-Process
の次のエイリアスが含まれています。
kill
spps
Windows PowerShell では、Windows Management Instrumentation (WMI) Win32_Process オブジェクトのプロパティとメソッドを使用することもできます。 詳細については、「
Get-CimInstance
と WMI SDK」を参照してください。プロセスを停止する場合は、プロセスを停止すると、プロセスに依存するプロセスとサービスが停止する可能性があることに気付く必要があります。 場合によっては、プロセスを停止したとき、Windows が停止する場合もあります。
関連リンク
PowerShell