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 を使用して、ユーザーが所有していないプロセスを停止した場合の効果を示します。

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

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

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

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

停止するプロセスのプロセス ID を指定します。 複数の ID を指定するには、ID をコンマで区切ります。 プロセスの PID を検索するには、「.」と入力します Get-Process

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InputObject

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

Type:Process[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

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

Type:String[]
Aliases:ProcessName
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PassThru

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

Process

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

出力

None

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

Process

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

メモ

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

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

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

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