共用方式為


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