Stop-Job
PowerShell バックグラウンド ジョブを停止します。
構文
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Stop-Job
コマンドレットは、進行中の PowerShell バックグラウンド ジョブを停止します。 このコマンドレットを使用すると、名前、ID、インスタンス ID、または状態に基づいて、またはジョブ オブジェクトを Stop-Job
に渡すことによって、すべてのジョブを停止したり、選択したジョブを停止したりできます。
Stop-Job
を使用して、Start-Job
コマンドレットまたは任意のコマンドレットの AsJob パラメーターを使用して開始されたジョブなど、バックグラウンド ジョブを停止できます。 バックグラウンド ジョブを停止すると、PowerShell はそのジョブ キューで保留中のすべてのタスクを完了し、ジョブを終了します。 このコマンドが送信された後、キューに新しいタスクは追加されません。
このコマンドレットでは、バックグラウンド ジョブは削除されません。 ジョブを削除するには、Remove-Job
コマンドレットを使用します。
Windows PowerShell 3.0 以降では、Stop-Job
は、WorkflowJobs や ScheduledJobs のインスタンスなどのカスタム ジョブの種類停止します。
Stop-Job
がカスタム ジョブの種類を持つジョブを停止できるようにするには、Stop-Job
コマンドレットを使用するか、モジュールでコマンドレットを使用または取得して、Import-Module
コマンドを実行する前に、カスタム ジョブの種類をサポートするモジュールをセッションにインポートします。 特定のカスタム ジョブの種類については、カスタム ジョブの種類機能のドキュメントを参照してください。
例
例 1: Invoke-Command を使用してリモート コンピューターでジョブを停止する
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-Job -Job $Using:j }
この例では、Stop-Job
コマンドレットを使用して、リモート コンピューターで実行されているジョブを停止する方法を示します。
Invoke-Command
コマンドをリモートで実行する Start-Job
コマンドレットを使用してジョブが開始されたため、ジョブ オブジェクトはリモート コンピューターに格納されます。
Invoke-Command
コマンドをリモートで実行するには、別の Stop-Job
コマンドを使用する必要があります。 リモート バックグラウンド ジョブの詳細については、「about_Remote_Jobs」を参照してください。
最初のコマンドは、Server01 コンピューターに PowerShell セッション (PSSession) を作成し、セッション オブジェクトを $s
変数に格納します。 このコマンドは、ドメイン管理者の資格情報を使用します。
2 番目のコマンドでは、Invoke-Command
コマンドレットを使用して、セッションで Start-Job
コマンドを実行します。 ジョブのコマンドは、システム イベント ログ内のすべてのイベントを取得します。 結果のジョブ オブジェクトは、$j
変数に格納されます。
3 番目のコマンドはジョブを停止します。
Invoke-Command
コマンドレットを使用して、Server01 上の Stop-Job
で コマンドを実行します。 ジョブ オブジェクトはローカル コンピューター上の変数である $j
に格納されるため、コマンドは Using:
スコープ修飾子を使用して、$j
をローカル変数として識別します。
Using:
スコープ修飾子の詳細については、「about_Remote_Variables」を参照してください。
コマンドが完了すると、ジョブが停止し、 内の $s
を使用できるようになります。
例 2: バックグラウンド ジョブを停止する
Stop-Job -Name "Job1"
このコマンドは、Job1
バックグラウンド ジョブを停止します。
例 3: 複数のバックグラウンド ジョブを停止する
Stop-Job -Id 1, 3, 4
このコマンドは、3 つのジョブを停止します。 IDによって識別されます。
例 4: すべてのバックグラウンド ジョブを停止する
Get-Job | Stop-Job
このコマンドは、現在のセッションのすべてのバックグラウンド ジョブを停止します。
例 5: ブロックされているすべてのバックグラウンド ジョブを停止する
Stop-Job -State Blocked
このコマンドは、ブロックされているすべてのジョブを停止します。
例 6: インスタンス ID でジョブを停止する
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceId -Auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 Start-Service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 Start-Service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 Get-Service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
これらのコマンドは、InstanceIdに基づいてジョブを停止する方法を示しています。
最初のコマンドでは、Get-Job
コマンドレットを使用して、現在のセッションのジョブを取得します。 このコマンドでは、パイプライン演算子 (|
) を使用してジョブを Format-Table
コマンドに送信し、各ジョブの指定されたプロパティのテーブルを表示します。 テーブルには、各ジョブの InstanceId が含まれています。 計算プロパティを使用してジョブの状態を表示します。
2 番目のコマンドでは、InstanceId パラメーターを持つ Stop-Job
コマンドを使用して、選択したジョブを停止します。
例 7: リモート コンピューターでジョブを停止する
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...
この例では、Stop-Job
コマンドレットを使用して、リモート コンピューターで実行されているジョブを停止する方法を示します。
ジョブは、 コマンドレットの Invoke-Command
パラメーターを使用して開始されたため、ジョブがリモート コンピューターで実行されている場合でも、Job オブジェクトはローカル コンピューターに配置されます。 そのため、ローカル Stop-Job
コマンドを使用してジョブを停止できます。
最初のコマンドでは、Invoke-Command
コマンドレットを使用して、Server01 コンピューターでバックグラウンド ジョブを開始します。 このコマンドでは、AsJob パラメーターを使用して、リモート コマンドをバックグラウンド ジョブとして実行します。
このコマンドは、Start-Job
コマンドレットが返すジョブ オブジェクトと同じジョブ オブジェクトを返します。
このコマンドは、ジョブ オブジェクトを $j
変数に保存します。
2 番目のコマンドでは、パイプライン演算子を使用して、$j
変数内のジョブを送信して Stop-Job
します。 このコマンドは、PassThru パラメーターを使用して、ジョブ オブジェクトを返す Stop-Job
を指示します。 ジョブ オブジェクトの表示では、ジョブの状態が停止していることを確認します。
リモート バックグラウンド ジョブの詳細については、about_Remote_Jobsを参照してください。
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Filter
条件のハッシュ テーブルを指定します。 このコマンドレットは、すべての条件を満たすジョブを停止します。 キーがジョブ プロパティで、値がジョブ プロパティ値であるハッシュ テーブルを入力します。
このパラメーターは、WorkflowJobs や ScheduledJobs など、カスタム ジョブの種類でのみ機能します。
Start-Job
コマンドレットを使用して作成されたものなど、標準のバックグラウンド ジョブでは機能しません。
このパラメーターのサポートについては、ジョブの種類のヘルプ トピックを参照してください。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | Hashtable |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Id
このコマンドレットが停止するジョブの ID を指定します。 既定値は、現在のセッションのすべてのジョブです。
ID は、現在のセッションのジョブを一意に識別する整数です。 インスタンス ID よりも覚えて入力する方が簡単ですが、現在のセッションでのみ一意です。 1 つ以上の ID をコンマで区切って入力できます。 ジョブの ID を検索するには、「Get-Job
」と入力します。
型: | Int32[] |
配置: | 0 |
規定値: | All jobs |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-InstanceId
このコマンドレットが停止するジョブのインスタンス ID を指定します。 既定値は、すべてのジョブです。
インスタンス ID は、コンピューター上のジョブを一意に識別する GUID です。 ジョブのインスタンス ID を検索するには、Get-Job
を使用します。
型: | Guid[] |
配置: | 0 |
規定値: | All jobs |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Job
このコマンドレットが停止するジョブを指定します。 ジョブを含む変数、またはジョブを取得するコマンドを入力します。 パイプライン 演算子を使用して、Stop-Job
コマンドレットにジョブを送信することもできます。 既定では、Stop-Job
は現在のセッションで開始されたすべてのジョブを削除します。
型: | Job[] |
配置: | 0 |
規定値: | All jobs |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Name
このコマンドレットが停止するジョブのフレンドリ名を指定します。 ジョブ名をコンマ区切りリストに入力するか、ワイルドカード文字 (*
) を使用してジョブ名パターンを入力します。 既定では、Stop-Job
は現在のセッションで作成されたすべてのジョブを停止します。
フレンドリ名が一意であるとは限らないため、WhatIf を使用し、名前でジョブを停止するときに パラメーターを確認します。
型: | String[] |
配置: | 0 |
規定値: | All jobs |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-PassThru
作業中のアイテムを表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-State
ジョブの状態を指定します。 このコマンドレットは、指定された状態のジョブのみを停止します。 このパラメーターに使用できる値は次のとおりです。
NotStarted
Running
Completed
Failed
Stopped
Blocked
Suspended
Disconnected
Suspending
Stopping
ジョブの状態の詳細については、「JobState 列挙 を参照してください。
型: | JobState |
指定可能な値: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
配置: | 0 |
規定値: | All jobs |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
System.Management.Automation.RemotingJob
ジョブ オブジェクトをこのコマンドレットにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
System.Management.Automation.PSRemotingJob
PassThru パラメーターを使用すると、このコマンドレットはジョブ オブジェクトを返します。
メモ
PowerShell には、Stop-Job
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
spjb
関連リンク
PowerShell