Remove-Job

刪除 PowerShell 背景工作。

Syntax

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>]

Description

Cmdlet Remove-Job 會刪除 Cmdlet 或 Cmdlet 所啟動 Start-Job 的 PowerShell 背景工作,例如 Invoke-Command 支援 AsJob 參數。

您可以使用 Remove-Job 刪除所有作業或刪除選取的作業。 作業會依其名稱標識碼、實例標識碼命令狀態來識別。 或者,作業物件可以將管線向下傳送至 Remove-Job。 如果沒有參數或參數值, Remove-Job 則沒有任何作用。

由於 PowerShell 3.0, Remove-Job 可以刪除自定義作業類型,例如排程的工作和工作流程作業。 例如, Remove-Job 刪除排程工作、磁碟上排程作業的所有實例,以及所有觸發作業實例的結果。

如果您嘗試刪除執行中的作業,則 Remove-Job 失敗。 Stop-Job使用 Cmdlet 停止執行中的作業。 或者,搭配 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 所建立的作業

此範例會移除遠端電腦上Invoke-Command以 AsJob 參數啟動的工作。

因為此範例使用 AsJob 參數,因此會在本機電腦上建立作業物件。 但是,作業會在遠端電腦上執行。 因此,您會使用本機命令來管理作業。

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-CommandServer01 電腦上執行作業。 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-JobName 參數會指定刪除名為 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

刪除具有指定識別子的背景工作。您可以輸入逗號分隔陣列。 作業的 標識碼 是識別目前會話內作業的唯一整數。

若要尋找作業的 標識碼,請使用 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會話內也是如此。 當您依名稱刪除檔案時, 請使用 WhatIfConfirm 參數。

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

-State

只會刪除具有指定狀態的作業。 若要刪除狀態為 [執行]作業,請使用 Force 參數。

接受的值:

  • AtBreakpoint
  • 已封鎖
  • 已完成
  • 已中斷連接
  • 失敗
  • 未開始
  • 執行中
  • 已停止
  • 停止中
  • 已暫停
  • 暫停中
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 會發生什麼事。 Cmdlet 未執行。

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

輸入

Job

您可以使用管線將 Job 物件傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會傳回任何輸出。

備註

PowerShell 包含下列的 Remove-Job別名:

  • 所有平臺:
    • rjb

PowerShell 作業會建立新的程式。 當作業完成時,進程就會結束。 執行時 Remove-Job ,會移除作業的狀態。

如果作業在完成之前停止,且其進程尚未結束,則會強制終止進程。