Remove-Job
刪除 PowerShell 背景工作。
語法
SessionIdParameterSet (預設值)
Remove-Job
[-Id] <Int32[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
JobParameterSet
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
NameParameterSet
Remove-Job
[-Name] <String[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceIdParameterSet
Remove-Job
[-InstanceId] <Guid[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
FilterParameterSet
Remove-Job
[-Filter] <Hashtable>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
StateParameterSet
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
CommandParameterSet
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Remove-Job Cmdlet 會刪除由 Start-Job Cmdlet 或其他例如支援 Invoke-Command 參數的 Cmdlet 所啟動的 PowerShell 背景工作。
您可以使用 Remove-Job 來移除所有作業或刪除選取的作業。 作業會依其 名稱、標識子、InstanceId、Command或 State來識別。 或者,作業物件可以被傳送到管線下游的 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:使用易記名稱刪除工作
此範例會從目前會話中刪除所有友善名稱結尾為 批次的工作,包括正在執行的工作。
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-Command 在 Server01 電腦上執行作業。
AsJob 參數會以背景工作的形式執行 ScriptBlock。 作業物件會儲存在 $job 變數中。
$job 變數物件會從管線向下傳送至 Remove-Job。
範例 6:刪除由 Invoke-Command 和 Start-Job 建立的作業
這個範例示範如何從使用 Invoke-Command 執行 Start-Job的遠端電腦上移除一個作業。 作業物件是在遠端電腦上建立,而遠端命令可用來管理作業。 執行遠端 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 會建立 PSSession,這是 Server01 計算機的持續性連線。 聯機會儲存在 $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[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
CommandParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Remove-Job 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
刪除符合關聯哈希表中設定的所有條件的任務。 輸入哈希表,其中索引鍵是作業屬性,而值是作業屬性值。
此參數僅適用於自定義作業類型,例如工作流程作業和排程工作。 它不適用於標準背景工作,例如使用 Start-Job所建立的工作。
此參數是在 PowerShell 3.0 中引進的。
參數屬性
| 類型: | Hashtable |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
FilterParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Force
即使作業的狀態 執行中,也會刪除作業。 如果未指定 Force 參數,Remove-Job 不會刪除執行中的作業。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | F |
參數集
SessionIdParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
JobParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
InstanceIdParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
NameParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
FilterParameterSet
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Id
刪除具有指定 識別碼的背景工作。您可以輸入以逗號分隔的數組。 工作的 識別碼 是一個用來識別目前會話中工作的唯一整數。
若要尋找作業的 識別碼,請使用不含參數的 Get-Job。
參數屬性
| 類型: | Int32[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
SessionIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-InstanceId
刪除具有指定之 InstanceId的工作。 您可以輸入逗號分隔陣列。 InstanceId 是用來識別工作的唯一 GUID。
若要尋找工作的 InstanceId,請使用 Get-Job。
參數屬性
| 類型: | Guid[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InstanceIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Job
指定要刪除的作業。 輸入包含作業的變數或用來取得作業的命令。 您可以輸入逗號分隔陣列。
您可以將作業物件傳送至 Remove-Job管線。
參數屬性
| 類型: | Job[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
JobParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Name
只會刪除具有指定易記名稱的作業。 允許使用通配符。 您可以輸入逗號分隔陣列。
作業的易記名稱不保證是唯一的,即使在PowerShell會話內也是如此。 當您依名稱刪除檔案時,請使用 WhatIf 和 確認 參數。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
NameParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-State
只會刪除具有指定狀態的作業。 若要刪除狀態為 Running的作業,請使用 Force 參數。
接受的值:
- AtBreakpoint
- 已封鎖
- 完成
- 已中斷連線
- 失敗
- 尚未開始
- 跑步
- 已停止
- 停止中
- 已暫停
- 暫停中
參數屬性
| 類型: | JobState |
| 預設值: | None |
| 接受的值: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
StateParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-WhatIf
顯示當 Remove-Job 執行時會發生什麼事。 該 Cmdlet 未被執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 無線 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
Job
可以將 Job 物件藉由管道傳送至此 Cmdlet。
輸出
None
此 Cmdlet 不會傳回任何輸出。
備註
PowerShell 包含下列 Remove-Job的別名:
- 所有平臺:
rjb
PowerShell 作業會建立一個新的程序。 當作業完成時,進程就會結束。 執行 Remove-Job 時,會移除作業的狀態。
如果作業在完成之前停止,且其進程尚未結束,則會強制終止進程。