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停止したりできます。
コマンドレットまたは任意のコマンドレットの AsJob パラメーターを使用して開始されたジョブなど、バックグラウンド ジョブを停止するために使用Stop-JobStart-Jobできます。 バックグラウンド ジョブを停止すると、PowerShell はそのジョブ キューで保留中のすべてのタスクを完了し、ジョブを終了します。 このコマンドが送信された後、新しいタスクはキューに追加されません。
このコマンドレットは、バックグラウンド ジョブを削除しません。 ジョブを削除するには、コマンドレットを Remove-Job 使用します。
Windows PowerShell 3.0 以降では、 Stop-JobWorkflowJobs や 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 System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
この例では、コマンドレットを Stop-Job 使用して、リモート コンピューターで実行されているジョブを停止する方法を示します。
コマンドをリモートで実行Start-Jobするコマンドレットを使用Invoke-Commandしてジョブが開始されたため、ジョブ オブジェクトはリモート コンピューターに格納されます。 コマンドをリモートで実行するには、別 Invoke-Command のコマンドを Stop-Job 使用する必要があります。 リモート バックグラウンド ジョブの詳細については、「about_Remote_Jobs」を参照してください。
最初のコマンドは、Server01 コンピューターに PowerShell セッション (PSSession) を作成し、そのセッション オブジェクトを $s 変数に格納します。 このコマンドは、ドメイン管理者の資格情報を使用します。
2 番目のコマンドでは、コマンドレットを Invoke-Command 使用してセッションでコマンドを実行 Start-Job します。 ジョブのコマンドは、システム イベント ログ内のすべてのイベントを取得します。 結果のジョブ オブジェクトは変数に $j 格納されます。
3 番目のコマンドは、ジョブを停止します。 このコマンドレットを Invoke-Command 使用して、 Stop-Job Server01 の PSSession でコマンドを実行します。 ジョブ オブジェクトはローカル コンピューター上の $j変数である 、に格納されるため、コマンドは Using スコープ修飾子 を 使用してローカル変数として識別 $j します。 Using スコープ修飾子の詳細については、「about_Remote_Variables」を参照してください。
コマンドが完了すると、ジョブが停止し、 PSSession が $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 番目のコマンドでは、Stop-JobInstanceID パラメーターを持つコマンドを使用して、選択したジョブを停止します。
例 7: リモート コンピューターでジョブを停止する
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet get-eventlog system
この例では、コマンドレットを Stop-Job 使用して、リモート コンピューターで実行されているジョブを停止する方法を示します。
ジョブはコマンドレットの Invoke-CommandAsJob パラメーターを使用して開始されたため、ジョブはリモート コンピューター上で実行されている場合でも、ジョブ オブジェクトはローカル コンピューターに配置されます。 そのため、ローカル Stop-Job コマンドを使用してジョブを停止できます。
最初のコマンドでは、このコマンドレットを Invoke-Command 使用して、Server01 コンピューターでバックグラウンド ジョブを開始します。 このコマンドは、AsJob パラメーターを使用して、バックグラウンド ジョブとしてリモート コマンドを実行します。
このコマンドは、コマンドレットが返すのと同じジョブ オブジェクトであるジョブ オブジェクトを Start-Job 返します。
このコマンドは、ジョブ オブジェクトを変数に $j 保存します。
2 番目のコマンドは、パイプライン演算子を使用して変数内のジョブを $j 送信します Stop-Job。 このコマンドは 、PassThru パラメーターを使用して、ジョブ オブジェクトを返すように指示 Stop-Job します。 ジョブ オブジェクトの表示では、ジョブの状態が停止していることを確認します。
リモート バックグラウンド ジョブの詳細については、「 about_Remote_Jobs」を参照してください。
パラメーター
コマンドレットの実行前に確認を求めるメッセージが表示されます。
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
条件のハッシュ テーブルを指定します。 このコマンドレットは、すべての条件を満たすジョブを停止します。 ジョブのプロパティをキー、ジョブのプロパティ値を値とするハッシュ テーブルを入力します。
このパラメーターは、 WorkflowJobs や ScheduledJobs などのカスタム ジョブの種類でのみ機能 します。 コマンドレットを使用して作成されたジョブなど、標準のバックグラウンド ジョブでは Start-Job 機能しません。
このパラメーターのサポートについては、ジョブの種類のヘルプ トピックを参照してください。
このパラメーターは Windows PowerShell 3.0 で導入されました。
| Type: | Hashtable |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
このコマンドレットが停止するジョブの ID を指定します。 既定は、現在のセッション内のすべてのジョブです。
ID は、現在のセッションのジョブを一意に識別する整数です。 インスタンス ID よりも覚えていて入力する方が簡単ですが、現在のセッションでのみ一意です。 1 つ以上の ID をコンマで区切って入力できます。 ジョブの ID を検索するには、「.」と入力します Get-Job。
| Type: | Int32[] |
| Position: | 0 |
| Default value: | All jobs |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
このコマンドレットが停止するジョブのインスタンス ID を指定します。 既定値はすべてのジョブです。
インスタンス ID は、コンピューター上のジョブを一意に識別する GUID です。 ジョブのインスタンス ID を検索するには、次を使用 Get-Jobします。
| Type: | Guid[] |
| Position: | 0 |
| Default value: | All jobs |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
このコマンドレットが停止するジョブを指定します。 ジョブが格納されている変数、またはジョブを取得するコマンドを入力します。 パイプライン演算子を使用して、コマンドレットにジョブを Stop-Job 送信することもできます。 既定では、 Stop-Job 現在のセッションで開始されたすべてのジョブを削除します。
| Type: | Job[] |
| Position: | 0 |
| Default value: | All jobs |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
このコマンドレットが停止するジョブのフレンドリ名を指定します。 ジョブ名をコンマ区切りリストに入力するか、ワイルドカード文字 (*) を使用してジョブ名パターンを入力します。 既定では、現在の Stop-Job セッションで作成されたすべてのジョブを停止します。
フレンドリ名は一意であることが保証されないため、名前でジョブを停止するときに WhatIf パラメーターと Confirm パラメーターを使用します。
| Type: | String[] |
| Position: | 0 |
| Default value: | All jobs |
| Accept pipeline input: | True |
| Accept wildcard characters: | True |
作業中の項目を表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
ジョブの状態を指定します。 このコマンドレットは、指定された状態のジョブのみを停止します。 このパラメーターの有効値は、次のとおりです。
NotStartedRunningCompletedFailedStoppedBlockedSuspendedDisconnectedSuspendingStopping
ジョブの状態の詳細については、「 JobState 列挙」を参照してください。
| Type: | JobState |
| Accepted values: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Position: | 0 |
| Default value: | All jobs |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
入力
System.Management.Automation.RemotingJob
ジョブ オブジェクトをこのコマンドレットにパイプ処理できます。
出力
None, System.Management.Automation.PSRemotingJob
PassThru パラメーターを指定すると、このコマンドレットはジョブ オブジェクトを返します。 それ以外の場合、このコマンドレットによる出力はありません。