Remove-Job
PowerShell バックグラウンド ジョブを削除します。
構文
Remove-Job
[-Force]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
Remove-Job
コマンドレットは、Start-Job
コマンドレットまたは AsJob パラメーターをサポートする Invoke-Command
などのコマンドレットによって開始された PowerShell バックグラウンド ジョブを削除します。
Remove-Job
を使用して、すべてのジョブを削除したり、選択したジョブを削除したりできます。 ジョブは、名、ID、インスタンス ID、コマンド、状態で識別されます。 または、ジョブ オブジェクトをパイプラインから Remove-Job
に送信することもできます。 パラメーターまたはパラメーター値がない場合、Remove-Job
は効果がありません。
PowerShell 3.0 以降、Remove-Job
は、スケジュールされたジョブやワークフロー ジョブなどのカスタム ジョブの種類を削除できます。 たとえば、Remove-Job
は、スケジュールされたジョブ、ディスク上のスケジュールされたジョブのすべてのインスタンス、およびトリガーされたすべてのジョブ インスタンスの結果を削除します。
実行中のジョブを削除しようとすると、Remove-Job
は失敗します。 実行中のジョブを停止するには、Stop-Job
コマンドレットを使用します。 または、Force パラメーターで Remove-Job
を使用して、実行中のジョブを削除します。
バックグラウンド ジョブを削除するか、PowerShell セッションを閉じるまで、ジョブはグローバル ジョブ キャッシュに残ります。
例
例 1: 名前を使用してジョブを削除する
この例では、変数とパイプラインを使用して、名前でジョブを削除します。
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
では、Name パラメーターを使用して、ジョブ BatchJobを指定します。 ジョブ オブジェクトは、$batch
変数に格納されます。 $batch
内のオブジェクトは、パイプラインから Remove-Job
に送信されます。
別の方法として、Remove-Job -Job $batch
などの Job パラメーターを使用します。
例 2: セッション内のすべてのジョブを削除する
この例では、現在の PowerShell セッション内のすべてのジョブが削除されます。
Get-Job | Remove-Job
Get-Job
は、現在の PowerShell セッション内のすべてのジョブを取得します。 ジョブ オブジェクトは、パイプラインを通じてRemove-Job
に送信されます。
例 3: NotStarted ジョブを削除する
次の使用例は、開始されていない現在の PowerShell セッションからすべてのジョブを削除します。
Remove-Job -State NotStarted
Remove-Job
では、State パラメーターを使用してジョブの状態を指定します。
例 4: フレンドリ名を使用してジョブを削除する
次の使用例は、実行中のジョブを含め、バッチで終わるフレンドリ名を持つすべてのジョブを現在のセッションから削除します。
Remove-Job -Name *batch -Force
Remove-Job
では、Name パラメーターを使用してジョブ名パターンを指定します。 このパターンには、batch で終わるすべてのジョブ名を検索するアスタリスク (*
) ワイルドカードが含まれています。 Force パラメーターは、実行中のジョブを削除します。
例 5: Invoke-Command によって作成されたジョブを削除する
次の使用例は、AsJob パラメーターを指定した Invoke-Command
を使用して、リモート コンピューターで開始されたジョブを削除します。
この例では、AsJob パラメーターを使用するため、ジョブ オブジェクトはローカル コンピューターに作成されます。 ただし、ジョブはリモート コンピューターで実行されます。 その結果、ローカル コマンドを使用してジョブを管理します。
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
は、Server01 コンピューターでジョブを実行します。 AsJob パラメーターは、ScriptBlock をバックグラウンド ジョブとして実行します。 ジョブ オブジェクトは、$job
変数に格納されます。 $job
変数オブジェクトは、パイプラインから Remove-Job
に送信されます。
例 6: Invoke-Command および Start-Job によって作成されたジョブを削除する
この例では、Start-Job
を実行するために Invoke-Command
を使用して開始されたリモート コンピューター上のジョブを削除する方法を示します。 ジョブ オブジェクトはリモート コンピューターに作成され、リモート コマンドを使用してジョブを管理します。 リモート Start-Job
コマンドを実行するときは、永続的な接続が必要です。
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}
New-PSSession
は、Server01 コンピューターへの永続的な接続である PSSessionを作成します。 接続は $S
変数に保存されます。
Invoke-Command
は、$S
に保存されたセッションに接続します。 ScriptBlock では、Start-Job
を使用してリモート ジョブを開始します。 ジョブは Get-Process
コマンドを実行し、Name パラメーターを使用して、MyJob わかりやすいジョブ名を指定します。
Invoke-Command
は、$S
セッションを使用し、Remove-Job
実行します。 Name パラメーターは、MyJob という名前のジョブを削除することを指定します。
例 7: InstanceId を使用してジョブを削除する
この例では、InstanceIdに基づいてジョブを削除します。
$job = Start-Job -ScriptBlock {Get-Process PowerShell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-Process PowerShell
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : ad02b942-8007-4407-87f3-d23e71955872
Id : 3
Name : Job3
ChildJobs : {Job4}
PSBeginTime : 7/26/2019 11:36:56
PSEndTime : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
バックグラウンド ジョブが開始され、ジョブ オブジェクトが $job
変数に保存されます。
$job
内のオブジェクトは、パイプラインから Format-List
に送信されます。 Property パラメーターでは、アスタリスク (*
) を使用して、オブジェクトのすべてのプロパティを一覧に表示するように指定します。
Remove-Job
は、InstanceId パラメーターを使用して、削除するジョブを指定します。
パラメーター
-Command
指定した単語をコマンドに含むジョブを削除します。 コンマ区切りの配列を入力できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Confirm
Remove-Job
を実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Filter
関連付けられているハッシュ テーブルで確立されたすべての条件を満たすジョブを削除します。 キーがジョブ プロパティで、値がジョブ プロパティ値であるハッシュ テーブルを入力します。
このパラメーターは、ワークフロー ジョブやスケジュールされたジョブなどのカスタム ジョブの種類でのみ機能します。 Start-Job
を使用して作成されたものなど、標準のバックグラウンド ジョブでは機能しません。
このパラメーターは、PowerShell 3.0 で導入されています。
型: | Hashtable |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Force
ジョブの状態が [実行中] の場合でもジョブを削除します。 Force パラメーターが指定されていない場合、Remove-Job
は実行中のジョブを削除しません。
型: | SwitchParameter |
Aliases: | F |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Id
指定した IDを持つバックグラウンド ジョブを削除します。コンマ区切りの配列を入力できます。 ジョブの ID は、現在のセッション内のジョブを識別する一意の整数です。
ジョブの IDを検索するには、パラメーターを指定せずに Get-Job
を使用します。
型: | Int32[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-InstanceId
指定した InstanceIdを持つジョブを削除します。 コンマ区切りの配列を入力できます。 InstanceId は、ジョブを識別する一意の GUID です。
仕事の InstanceIdを検索するには、Get-Job
を使用します。
型: | Guid[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Job
削除するジョブを指定します。 ジョブを含む変数、またはジョブを取得するコマンドを入力します。 コンマ区切りの配列を入力できます。
ジョブオブジェクトをパイプラインに送信して、Remove-Job
に渡すことができます。
型: | Job[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Name
指定したフレンドリ名を持つジョブのみを削除します。 ワイルドカードを使用できます。 コンマ区切りの配列を入力できます。
PowerShell セッション内であっても、ジョブのフレンドリ名が一意であるとは限りません。 ファイルを名前で削除するときは、WhatIf パラメーターと Confirm パラメーターを使用します。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-State
指定された状態のジョブのみを削除します。 実行中のの状態のジョブを削除するには、Force パラメーターを使用します。
受け入れ可能な値:
- AtBreakpoint
- ブロックされました
- 完了
- 切断された
- 失敗 しました
- NotStarted
- ランニング
- 停止済み
- 停車
- 中断
- 中断中
型: | JobState |
指定可能な値: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-WhatIf
Remove-Job
が実行された場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
Job オブジェクトをこのコマンドレットにパイプできます。
出力
None
このコマンドレットは出力を返しません。
メモ
PowerShell には、Remove-Job
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
rjb
PowerShell ジョブによって新しいプロセスが作成されます。 ジョブが完了すると、プロセスが終了します。 Remove-Job
を実行すると、ジョブの状態が削除されます。
ジョブが完了する前に停止し、そのプロセスが終了していない場合、プロセスは強制的に終了されます。
関連リンク
PowerShell