Windows PowerShell バックグラウンド ジョブを削除します。

構文

Remove-Job [-Id] <Int32[]> [-Force] [-確認] [-WhatIf] [<CommonParameters>]

Remove-Job [-Command <string[]>] [-確認] [-WhatIf] [<CommonParameters>]

Remove-Job [[-InstanceId] <Guid[]>] [-Force] [-確認] [-WhatIf] [<CommonParameters>]

Remove-Job [-Job] <Job[]> [-Force] [-確認] [-WhatIf] [<CommonParameters>]

Remove-Job [[-Name] <string[]>] [-Force] [-確認] [-WhatIf] [<CommonParameters>]

Remove-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-確認] [-WhatIf] [<CommonParameters>]

説明

Remove-Job コマンドレットは、Start-Job またはいずれかのコマンドレットの AsJob パラメーターを使用して開始された Windows PowerShell バックグラウンド ジョブを削除します。

このコマンドレットを使用すると、すべてのジョブを削除したり、名前、ID、インスタンス ID、コマンド、または状態に基づいて選択したジョブのみを削除したりできます。また、ジョブ オブジェクトを Remove-Job に渡すことで選択したジョブを削除することができます。パラメーターまたはパラメーターの値を指定しない場合、Remove-Job に効力はありません。

実行中のジョブを削除する前に、Stop-Job コマンドレットを使用してジョブを停止します。実行中のジョブを削除しようとすると、コマンドは失敗します。Remove-Job の Force パラメーターを使用すると、実行中のジョブを削除できます。

バックグラウンド ジョブを削除しない場合は、ジョブが作成されたセッションを閉じるまで、ジョブはグローバル ジョブ キャッシュに残っています。

パラメーター

-Command <string[]>

指定された単語がコマンド内に含まれるジョブを削除します。

必須

false

位置

named

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-Force

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

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-Id <Int32[]>

指定された ID を持つバックグラウンド ジョブを削除します。

ID は、現在のセッション内のジョブを一意に識別する整数です。インスタンス ID よりも覚えやすく入力も容易ですが、一意であるのは現在のセッション内のみです。1 つまたは複数の ID (コンマで区切る) を入力できます。ジョブの ID を検索するには、パラメーターを指定せずに「Get-Job」と入力します。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-InstanceId <Guid[]>

指定されたインスタンス ID を持つジョブを削除します。

インスタンス ID は、コンピューターのジョブを一意に識別する GUID です。ジョブのインスタンス ID を検索するには、Get-Job を使用するか、ジョブ オブジェクトを表示します。

必須

false

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-Job <Job[]>

削除するジョブを指定します。ジョブを格納する変数を入力するか、ジョブを取得するコマンドを入力します。パイプライン演算子を使用して、ジョブを Remove-Job コマンドレットに送信することもできます。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByValue, ByPropertyName)

ワイルドカード文字を許可する

false

-Name <string[]>

指定されたフレンドリ名のジョブのみを削除します。ワイルドカードを使用できます。

セッション内であってもフレンドリ名が一意である保証はないため、名前を指定してジョブを削除するときには WhatIf パラメーターおよび Confirm パラメーターを使用します。

必須

false

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

true

-State <JobState>

指定された状態のジョブのみを削除します。有効な値は、NotStarted、Running、Completed、Stopped、Failed、および Blocked です。状態が Running であるジョブを削除するには、Force パラメーターを使用します。

必須

false

位置

named

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-確認

コマンドを実行する前に確認メッセージを表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-WhatIf

実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

System.Management.Automation.Job

パイプを使用してジョブ オブジェクトを Remove-Job に渡すことができます。

出力

None

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

例 1

C:\PS>$batch = get-job -name BatchJob

C:\PS> $batch | remove-job

説明
-----------
これらのコマンドは、現在のセッションから BatchJob という名前のバックグラウンド ジョブを削除します。最初のコマンドは、Get-Job コマンドレットを使用して、ジョブを表すオブジェクトを取得し、ジョブを $batch 変数に保存します。2 番目のコマンドは、パイプライン演算子 (|) を使用してジョブを Remove-Job コマンドレットに送信します。

このコマンドでは、Remove-Job で Job パラメーターを使用した場合 ("remove-job -job $batch" など) と同様の結果が得られます。






例 2

C:\PS>get-job | remove-job

説明
-----------
このコマンドは、現在のセッションのすべてのジョブを削除します。






例 3

C:\PS>remove-job -state NotStarted

説明
-----------
このコマンドは、まだ開始されていないすべてのジョブを現在のセッションから削除します。






例 4

C:\PS>remove-job -name *batch -force

説明
-----------
このコマンドは、フレンドリ名の末尾に "batch" が付くすべてのジョブ (実行中のジョブを含む) を現在のセッションから削除します。

Remove-Job の Name パラメーターを使用してジョブ名パターンを指定し、Force パラメーターを使用して、進行中のジョブも含め、すべてのジョブが確実に削除されるようにしています。






例 5

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-process} -asJob

C:\PS> $j | remove-job

説明
-----------
この例では、Invoke-Command コマンドレットの AsJob パラメーターを使用し、リモート コンピューター上で開始されたジョブを Remove-Job コマンドレットを使用して削除する方法を示します。

最初のコマンドは、Invoke-Command コマンドレットを使用して、ジョブを Server01 コンピューター上で実行します。AsJob パラメーターを使用してコマンドをバックグラウンド ジョブとして実行し、結果のジョブ オブジェクトを $j 変数に保存します。

ジョブはリモート コンピューター上で実行されますが、コマンドで AsJob パラメーターを使用しているため、ジョブ オブジェクトはローカル コンピューター上に作成されます。そのため、ローカル コマンドを使用してジョブを管理します。

2 番目のコマンドは、Remove-Job コマンドレットを使用してジョブを削除します。このコマンドは、パイプライン演算子 (|) を使用して、$j に保存されたジョブを Remove-Job に送信します。このコマンドはローカル コマンドであることに注意してください。AsJob パラメーターを使用して開始されたジョブを削除する場合、リモート コマンドは必要ありません。






例 6

C:\PS>$s = new-pssession -computername Server01

C:\PS> invoke-command -session $s -scriptblock {start-job -scriptblock {get-process} -name MyJob}

C:\PS> invoke-command -session $s -scriptblock {remove-job -name MyJob}

説明
-----------
この例では、Invoke-Command を使用して Start-Job コマンドを実行することで開始されたジョブを削除する方法を示します。この場合、リモート コンピューター上にジョブ オブジェクトが作成されるため、リモート コマンドを使用してジョブを管理します。

最初のコマンドは、New-PSSession コマンドレットを使用して Server01 コンピューターとの PSSession (固定接続) を作成します。固定接続は、リモートから Start-Job コマンドを実行するときに必要になります。このコマンドは PSSession を $s 変数に保存します。

2 番目のコマンドは、Invoke-Command コマンドレットを使用して、$s に保存された PSSession で Start-Job コマンドを実行します。ジョブは Get-Process コマンドを実行します。また、Start-Job の Name パラメーターを使用して、ジョブのフレンドリ名を指定します。

3 番目のコマンドは、Invoke-Command コマンドレットを使用して、$s に保存された PSSession で Remove-Job コマンドを実行します。このコマンドは、Remove-Job の Name パラメーターを使用して、削除するジョブを指定しています。






例 7

C:\PS>$j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

C:\PS> $j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process powershell
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : dce2ee73-f8c9-483e-bdd7-a549d8687eed
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

説明
-----------
この例では、インスタンス ID に基づいてジョブを削除する方法を示します。

最初のコマンドは、Start-Job コマンドレットを使用してバックグラウンド ジョブを開始します。このコマンドは、結果のジョブ オブジェクトを $j 変数に保存します。

2 番目のコマンドは、パイプライン演算子 (|) を使用して、$j に保存されたジョブ オブジェクトを Format-List コマンドレットに送信します。Format-List コマンドは Property パラメーターに * (すべての値) を指定して、ジョブ オブジェクトのすべてのプロパティを一覧に表示します。

ジョブ オブジェクトの表示には、ID プロパティおよび InstanceID プロパティの値がオブジェクトの他のプロパティと共に表示されます。

3 番目のコマンドは、Remove-Job コマンドレットを使用して、現在のセッションからジョブを削除します。コマンドを生成する際には、オブジェクトの表示から InstanceID の値をコピーおよび貼り付けすることができます。

Windows PowerShell コンソールの値をコピーするには、マウスを使用して値を選択し、Enter キーを押して値をコピーします。値を貼り付けるには、右クリックします。






関連項目




目次