Remove-Job
刪除 PowerShell 背景工作。
Syntax
Remove-Job
[-Id] <Int32[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Name] <String[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Filter] <Hashtable>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-InstanceId] <Guid[]>
[-Force]
[-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 參數的 Cmdlet。
您可以使用 Remove-Job
來移除所有作業或刪除選取的作業。 作業會依名稱、標識碼、實例標識碼、命令或狀態來識別。 或者,作業物件可以將管線向下傳送至 Remove-Job
。 如果沒有參數或參數值, Remove-Job
則沒有任何作用。
由於 PowerShell 3.0 可以 Remove-Job
刪除自定義作業類型,例如排程的工作和工作流程作業。 例如, Remove-Job
刪除排程工作、磁碟上排程工作的所有實例,以及所有觸發工作實例的結果。
如果您嘗試刪除執行中的作業, Remove-Job
則失敗。 Stop-Job
使用 Cmdlet 停止執行中的作業。 或者,搭配 Remove-Job
Force 參數使用 來刪除執行中的作業。
作業會保留在全域作業快取中,直到您刪除背景作業或關閉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
刪除具有指定 識別子的背景工作。您可以輸入逗號分隔陣列。 作業的 標識碼 是可識別目前會話內作業的唯一整數。
若要尋找作業的 標識碼,請使用 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
- 封鎖
- 已完成
- 已中斷連接
- 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
會發生什麼情況。 不會執行此 Cmdlet。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以將作業物件向下傳送至 Remove-Job
。
輸出
None
Remove-Job
不會產生任何輸出。
備註
PowerShell 作業會建立新的進程。 當作業完成時,進程就會結束。 執行 時 Remove-Job
,會移除作業的狀態。
如果作業在完成之前停止,且其進程尚未結束,則會強制終止進程。