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 ,該工作狀態會被移除。

如果工作在完成前停止且程序尚未退出,該程序將被強制終止。