次の方法で共有


Stop-Process

実行中のプロセスを 1 つ以上停止します。

構文

Stop-Process [-Id] <Int32[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -InputObject <Process[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Process -Name <string[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

説明

Stop-Process コマンドレットは、実行中のプロセスを 1 つ以上停止します。プロセスを指定するには、プロセス名またはプロセス ID (PID) で指定するか、Stop-Process に対してプロセス オブジェクトを渡します。Stop-Process は、ローカル コンピューターで実行されているプロセスでのみ機能します。

Windows Vista 以降のバージョンの Windows で、現在のユーザーが所有していないプロセスを停止するには、Windows PowerShell を起動する際に [管理者として実行] を指定する必要があります。また、Force パラメーターを使用する場合を除き、確認メッセージが表示されます。

パラメーター

-Force

確認メッセージを表示せずに、指定されたプロセスを停止します。既定では、Stop-Process は、現在のユーザーが所有していないプロセスを停止する前に、確認メッセージを表示します。

プロセスの所有者を確認するには、Get-WmiMethod コマンドレットを使用して、プロセスを表す Win32_Process オブジェクトを取得します。次に、オブジェクトの GetOwner メソッドを使用します。

必須

false

位置

named

既定値

False

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Id <Int32[]>

停止するプロセスのプロセス ID を指定します。複数の ID を指定するには、ID をコンマで区切ります。プロセスの PID を検索するには、「get-process」と入力します。パラメーター名 ("Id") は省略可能です。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-InputObject <Process[]>

指定したプロセス オブジェクトが表すプロセスを停止します。オブジェクトが格納されている変数を入力するか、オブジェクトを取得するコマンドまたは式を入力します。

必須

true

位置

named

既定値

パイプライン入力を許可する

true (ByValue)

ワイルドカード文字を許可する

false

-Name <string[]>

停止するプロセスのプロセス名を指定します。複数のプロセス名をコンマで区切って指定することも、ワイルドカード文字を使用することもできます。

必須

true

位置

named

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-PassThru

プロセスを表すオブジェクトを返します。既定では、このコマンドレットによる出力はありません。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Confirm

コマンドを実行する前に確認メッセージを表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-WhatIf

実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

System.Diagnostics.Process

パイプを使用してプロセス オブジェクトを Stop-Process に渡すことができます。

出力

なし、または System.Diagnostics.Process

Stop-Process で PassThru パラメーターを使用すると、停止されたプロセスを表す System.Diagnostics.Process オブジェクトが返されます。それ以外の場合、このコマンドレットによる出力はありません。

Stop-Process を組み込みエイリアス "kill" および "spps" で参照することもできます。詳細については、「about_Aliases」を参照してください。

また、Windows Management Instrumentation (WMI) Win32_Process オブジェクトのプロパティとメソッドを Windows PowerShell で使用することもできます。詳細については、Get-WmiObject および「WMI SDK」を参照してください。

プロセスを停止すると、そのプロセスに依存するプロセスやサービスも停止する可能性があることに注意してください。場合によっては、プロセスを停止したとき、Windows が停止する場合もあります。

例 1

C:\PS>stop-process -name notepad

説明
-----------
このコマンドを実行すると、コンピューター上の Notepad プロセスのインスタンスがすべて停止されます (Notepad の各インスタンスは個別のプロセスで動作します)。この例では、Name パラメーターを使用してプロセスを指定しています。プロセス名はすべて同じです。ID パラメーターを使用して同じプロセスを停止する場合は、Notepad の各インスタンスの ID を列挙する必要があります。





例 2

C:\PS>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 パラメーターは、Windows PowerShell に対して、プロセスを停止する前にユーザーに確認メッセージを表示することを指示します。確認メッセージにはプロセス名と ID が含まれているため、この方法を推奨します。PassThru パラメーターがあるため、プロセス オブジェクトは、表示用に書式設定プログラムに渡されます。このパラメーターがないと、Stop-Process コマンドを実行しても何も表示されません。





例 3

C:\PS>calc

c:\PS>$p = get-process calc

c:\PS>stop-process -inputobject $p

c:\PS>get-process | where-object {$_.HasExited}

説明
-----------
この一連のコマンドを実行すると、Calc プロセスが開始されて停止された後、停止したプロセスが検出されます。

最初のコマンド (calc) を実行すると、電卓のインスタンスが開始されます。2 番目のコマンド ($p = get-process calc) を実行すると、Get-Process コマンドレットを使用して Calc プロセスを表すオブジェクトが取得され、$p 変数に格納されます。3 番目のコマンド (stop-process -inputobject $p) を実行すると、Stop-Process コマンドレットを使用して、Calc プロセスが停止されます。InputObject パラメーターを使用して、オブジェクトを Stop-Process に渡しています。

最後のコマンドは、コンピューター上の、以前は実行中で現在は停止しているすべてのプロセスを取得します。コンピューター上のすべてのプロセスを取得するために、Get-Process コマンドレットを使用しています。パイプライン演算子 (|) により、結果が Where-Object コマンドレットに渡され、HasExited プロパティの値が TRUE のプロセスが選択されます。HasExited は、プロセス オブジェクトの 1 つのプロパティにすぎません。すべてのプロパティを検索するには、「get-process | get-member」と入力します。





例 4

C:\PS>get-process 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 lsass  | stop-process <<<<

[ADMIN]: C:\PS> get-process 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]: C:\PS> get-process lsass | stop-process -force
[ADMIN]: C:\PS>

説明
-----------
これらのコマンドは、Force パラメーターを使用して、ユーザーが所有していないプロセスを停止するときの結果を示します。

最初のコマンドは、Get-Process コマンドレットを使用して Lsass プロセスを取得します。パイプライン演算子がプロセスを Stop-Process コマンドレットに渡して、プロセスを停止します。サンプル出力に示されているように、最初のコマンドは失敗して "アクセスは拒否されました" というメッセージが表示されます。これは、このプロセスを停止できるのは、コンピューターの Administrators グループのメンバーに限られているためです。

[管理者として実行] を指定して Windows PowerShell を開き、コマンドを繰り返すと、確認メッセージが表示されます。

2 番目のコマンドは、Force パラメーターを使用して、確認メッセージを表示しないようにします。その結果、プロセスは確認なしで停止されます。





関連項目

概念

Get-Process
Start-Process
Stop-Process
Wait-Process
Debug-Process