Remove-Job
刪除 Windows PowerShell 背景工作。
語法
Remove-Job [-Id] <Int32[]> [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-Job [-Command <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-Job [[-InstanceId] <Guid[]>] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-Job [-Job] <Job[]> [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-Job [[-Name] <string[]>] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]
Remove-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-Confirm] [-WhatIf] [<CommonParameters>]
描述
Remove-Job Cmdlet 會刪除利用 Start-Job 或任何 Cmdlet 之 AsJob 參數啟動的 Windows PowerShell 背景工作。
您可以使用這個 Cmdlet 刪除所有工作,或是依據工作的名稱、識別碼、執行個體識別碼、命令或狀態,或者將工作物件傳遞到 Remove-Job,以便刪除選取的工作。如果沒有使用參數或參數值,Remove-Job 就沒有作用。
刪除正在執行的工作之前,請先使用 Stop-Job Cmdlet 停止工作。如果嘗試刪除正在執行的工作,命令會失敗。您可以使用 Remove-Job 的 Force 參數來刪除正在執行的工作。
如果沒有刪除背景工作,工作便會保留在全域工作快取中,直到您關閉在其中建立工作的工作階段為止。
參數
-Command <string[]>
移除包括命令中指定之單字的工作。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Force
刪除工作,即使狀態為 "Running" 也是如此。如果未指定 Force 參數,Remove-Job 就無法刪除正在執行的工作。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Id <Int32[]>
刪除具有指定之識別碼的背景工作。
識別碼是整數,可唯一識別目前工作階段內的工作。它比執行個體識別碼更容易記得和輸入,但是只有在目前的工作階段中才具有唯一性。您可以輸入一個或多個識別碼 (以逗號分隔)。若要尋找工作的識別碼,請輸入 "Get-Job" 且不要指定參數。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-InstanceId <Guid[]>
刪除具有指定之執行個體識別碼的工作。
執行個體識別碼是一種 GUID,它能夠唯一識別電腦上的工作。若要尋找工作的執行個體識別碼,請使用 Get-Job 或顯示工作物件。
必要? |
false |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Job <Job[]>
指定要刪除的工作。請輸入包含工作的變數或可取得工作的命令。您也可以使用管線運算子將工作提交給 Remove-Job Cmdlet。
必要? |
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 |
-Confirm
在執行命令前先提示確認。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-WhatIf
說明執行命令時將會發生何種情況,但不會實際執行命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.Management.Automation.Job 您可以經由管道將工作物件輸出至 Remove-Job。 |
輸出 |
無 這個 Cmdlet 不會產生任何輸出。 |
範例 1
C:\PS>$batch = get-job -name BatchJob
C:\PS> $batch | remove-job
描述
-----------
這些命令會從目前的工作階段刪除名為 BatchJob 的背景工作。第一個命令會使用 Get-Job Cmdlet 取得表示該項工作的物件,然後再將工作儲存到 $batch 變數。第二個命令會使用管線運算子 (|) 將工作傳送到 Remove-Job Cmdlet。
這個命令的作用等同於使用 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
描述
-----------
在這個範例中,會示範如何使用 Remove-Job Cmdlet 移除利用 Invoke-Command Cmdlet 的 AsJob 參數在遠端電腦啟動的工作。
第一個命令會使用 Invoke-Command Cmdlet 在 Server01 電腦執行工作,並使用 AsJob 參數將命令當做背景工作來執行,然後將產生的工作物件儲存在 $j 變數中。
因為這個命令是使用 AsJob 參數,所以即使工作是在遠端電腦執行,仍會在本機電腦建立工作物件。因此,請使用本機命令來管理工作。
第二個命令會使用 Remove-Job Cmdlet 移除工作。它會使用管線運算子 (|) 將 $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 Cmdlet,建立與 Server01 電腦之間的 PSSession (固定連線)。固定連線是在遠端執行 Start-Job 命令的必要條件。命令會將 PSSession 儲存在 $s 變數中。
第二個命令會使用 Invoke-Command Cmdlet,在 $s 中的 PSSession 裡執行 Start-Job 命令,而該工作會執行 Get-Process 命令。它會使用 Start-Job 的 Name 參數來指定工作的好記名稱。
第三個命令會使用 Invoke-Command Cmdlet,在 $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
描述
-----------
在這個範例中,會示範如何依據執行工作的個體識別碼來移除工作。
第一個會命令會使用 Start-Job Cmdlet 來啟動背景工作。這個命令會將產生的工作物件儲存在 $j 變數中。
第二個命令會使用管線運算子 (|),將 $j 中的工作物件傳送到 Format-List 命令。Format-List 命令會使用值為 * (所有) 的 Property 參數,在清單中顯示工作物件的所有屬性。
工作物件顯示會列出 ID 和 InstanceID 屬性的值,以及物件的其他屬性。
第三個命令會使用 Remove-Job 命令,從目前的工作階段移除工作。若要產生此命令,您可以從物件顯示複製及貼上 InstanceID 值。
若要在 Windows PowerShell 主控台中複製值,請使用滑鼠選取值,然後再按 Enter 進行複製。若要貼上值,請按一下滑鼠右鍵。
請參閱
概念
about_Jobs
about_Job_Details
about_remote_jobs
Start-Job
Get-Job
Receive-Job
Wait-Job
Stop-Job
Invoke-Command