英語で読む

次の方法で共有


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: プロセスのすべてのインスタンスを停止する

Stop-Process -Name "notepad"

このコマンドは、コンピューター上のメモ帳プロセスのすべてのインスタンスを停止します。 メモ帳の各インスタンスは、独自のプロセスで実行されます。 Name パラメーターを使用してプロセスを指定し、そのすべてが同じ名前を持ちます。 ID パラメーターを使用して同じプロセスを停止する場合は、メモ帳の各インスタンスのプロセス ID を一覧表示する必要があります。

例 2: プロセスの特定のインスタンスを停止する

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

このコマンドは、メモ帳プロセスの特定のインスタンスを停止します。 プロセス 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

これらのコマンドは、Force を使用して、ユーザーが所有していないプロセスを停止する効果を示します。

最初のコマンドでは、Get-Process を使用して Lsass プロセスを取得します。 パイプライン演算子は、プロセスを停止するために Stop-Process にプロセスを送信します。 サンプル出力に示すように、このプロセスはコンピューター上の Administrator グループのメンバーのみが停止できるため、最初のコマンドは Access 拒否メッセージで失敗します。

[管理者として実行] オプションを使用して PowerShell を開き、コマンドを繰り返すと、確認を求めるメッセージが表示されます。

2 番目のコマンドは、プロンプトを抑制 強制的に を指定します。 その結果、プロセスは確認なしで停止します。

パラメーター

-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
  • ウィンドウズ:
    • kill

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

  • プロセスを停止する場合は、プロセスを停止すると、プロセスに依存するプロセスとサービスが停止する可能性があることに気付く必要があります。 極端なケースでは、プロセスを停止すると Windows が停止する可能性があります。