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

入力

Process

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

出力

None

既定では、このコマンドレットは出力を返しません。

Process

PassThru パラメーターを使用すると、このコマンドレットは停止したプロセスを表す Process オブジェクトを返します。

メモ

PowerShell には、 Stop-Processの次のエイリアスが含まれています。

  • すべてのプラットフォーム:
    • spps
  • Windows:
    • kill

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

  • プロセスを停止する場合は、プロセスを停止すると、プロセスに依存するプロセスとサービスが停止する可能性があることに気付く必要があります。 場合によっては、プロセスを停止したとき、Windows が停止する場合もあります。