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指令長會刪除由該Start-Job指令長或支援 AsJob 參數等指令長Invoke-Command所啟動的 PowerShell 背景工作。
你可以用來 Remove-Job 刪除所有工作或刪除選取的工作。 這些工作會以 名稱、 ID、 InstanceId、 指令或 狀態來識別。 或者,工作物件可以沿管線傳送至 Remove-Job。 沒有參數或參數值,則 Remove-Job 沒有影響。
自 PowerShell 3.0 起,可以 Remove-Job 刪除自訂的工作類型,例如排程工作和工作流程工作。 例如,刪除 Remove-Job 排程工作、磁碟上排程工作的所有實例,以及所有觸發的工作實例的結果。
如果你嘗試刪除正在執行的工作,就會 Remove-Job 失敗。 用 Stop-Job cmdlet 停止執行中的作業。 或者,使用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 參數來指定工作名稱模式。 該模式包含星號(*)通配符,用以找出所有以 batch 結尾的工作名稱。
Force 參數會刪除正在執行的工作。
範例五:刪除由 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 建立的工作
此範例展示了如何移除遠端電腦上由執行 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的 session 中。
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 |
| 別名: | 參見 |
參數集
(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
刪除帶有指定 ID 的背景工作。你可以輸入一個逗號分隔的陣列。 該工作的 ID 是一個唯一的整數,用來識別當前會話中的一個工作。
要找到職缺 的 ID,請使用 Get-Job without parameters。
參數屬性
| 類型: | 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 和 Confirm 參數。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
NameParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-State
只會刪除具有指定狀態的工作。 要刪除處於 執行狀態的工作,請使用 強制 參數。
接受的值:
- 斷點
- 已封鎖
- 已完成
- 已中斷連線
- 失敗
- 尚未開始
- Running
- 已停止
- 停止中
- 已暫停
- 暫停中
參數屬性
| 類型: | 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 ,該工作狀態會被移除。
如果工作在完成前停止且程序尚未退出,該程序將被強制終止。