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、コマンドレットまたは AsJob パラメーターをStart-Jobサポートするコマンドレットなど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の下に送信されます。

別の方法として、Job パラメーターを使用します。次に例を示Remove-Job -Job $batchします。

例 2: セッション内のすべてのジョブを削除する

この例では、現在の PowerShell セッション内のすべてのジョブが削除されます。

Get-job | Remove-Job

Get-Job は、現在の PowerShell セッション内のすべてのジョブを取得します。 ジョブ オブジェクトは、パイプライン Remove-Jobの下に送信されます。

例 3: NotStarted ジョブを削除する

次の使用例は、開始されていない現在の PowerShell セッションからすべてのジョブを削除します。

Remove-Job -State NotStarted

Remove-Jobでは、State パラメーターを使用してジョブの状態を指定します。

例 4: フレンドリ名を使用してジョブを削除する

次の使用例は、実行中のジョブを含め、batch* で終わるフレンドリ名を持つすべてのジョブを現在のセッションから削除します。

Remove-Job -Name *batch -Force

Remove-Jobでは、Name パラメーターを使用してジョブ名パターンを指定します。 パターンには、バッチで終わるすべてのジョブ名を検索するアスタリスク (*) ワイルドカードが含まれています。 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

指定された単語をコマンドに含んでいるジョブを削除します。 コンマ区切りの配列を入力できます。

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

-Confirm

実行前に確認 Remove-Job を求めるメッセージが表示されます。

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

-Filter

関連付けられているハッシュ テーブルで確立されたすべての条件を満たすジョブを削除します。 ジョブのプロパティをキー、ジョブのプロパティ値を値とするハッシュ テーブルを入力します。

このパラメーターは、ワークフロー ジョブ、スケジュールされたジョブなどの、カスタムのジョブの種類に対してのみ機能します。 を使用して作成されたジョブなど、標準のバックグラウンド ジョブでは Start-Job機能しません。

このパラメーターは、PowerShell 3.0 で導入されました。

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

ジョブの状態が実行中の場合でも、ジョブを削除します。 Force パラメーターが指定されていない場合、Remove-Job実行中のジョブは削除されません。

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

-Id

指定した ID を持つバックグラウンド ジョブを削除します。コンマ区切りの配列を入力できます。 ジョブの ID は、現在のセッション内のジョブを識別する一意の整数です。

ジョブの ID を検索するには、パラメーターなしで使用 Get-Job します。

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

-InstanceId

指定した InstanceId を持つジョブを削除します。 コンマ区切りの配列を入力できます。 InstanceId は、ジョブを識別する一意の GUID です。

ジョブの InstanceId を検索するには、次を使用Get-Jobします

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

-Job

削除するジョブを指定します。 ジョブが格納されている変数、またはジョブを取得するコマンドを入力します。 コンマ区切りの配列を入力できます。

パイプライン Remove-Jobの下にジョブ オブジェクトを送信できます。

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

-Name

指定したフレンドリ名を持つジョブのみを削除します。 ワイルドカードを使用できます。 コンマ区切りの配列を入力できます。

PowerShell セッション内であっても、ジョブのフレンドリ名が一意であるとは限りません。 名前でファイルを 削除する場合は、WhatIf パラメーターと Confirm パラメーターを使用します。

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

-State

指定された状態のジョブのみを削除します。 実行中の状態のジョブを削除するには、Force パラメーターを使用します。

指定できる値:

  • AtBreakpoint
  • ブロック
  • 完了済み
  • [Disconnected](切断済み)
  • Failed
  • NotStarted
  • 実行中
  • 停止済み
  • 停止中
  • 中止
  • Suspending
Type:JobState
Accepted values:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

実行した場合 Remove-Job の動作を示します。 コマンドレットは実行されません。

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

入力

Job

Job オブジェクトをこのコマンドレットにパイプできます。

出力

None

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

メモ

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

  • すべてのプラットフォーム:
    • rjb

PowerShell ジョブによって新しいプロセスが作成されます。 ジョブが完了すると、プロセスが終了します。 実行すると Remove-Job 、ジョブの状態が削除されます。

ジョブが完了する前に停止し、そのプロセスが終了していない場合、プロセスは強制的に終了されます。