Stop-Job
停止 PowerShell 背景工作。
語法
SessionIdParameterSet (預設值)
Stop-Job
[-Id] <Int32[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
JobParameterSet
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
NameParameterSet
Stop-Job
[-Name] <String[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceIdParameterSet
Stop-Job
[-InstanceId] <Guid[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
StateParameterSet
Stop-Job
[-State] <JobState>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
FilterParameterSet
Stop-Job
[-Filter] <Hashtable>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Stop-Job Cmdlet 會停止進行中的 PowerShell 背景工作。 您可以使用這個 Cmdlet,根據作業的名稱、標識碼、實例標識碼或狀態,或將作業對象傳遞至 Stop-Job,來停止所有作業或停止選取的工作。
您可以使用 Stop-Job 來停止背景工作,例如使用 Start-Job Cmdlet 或任何 Cmdlet 的 AsJob 參數啟動的工作。 當您停止背景作業時,PowerShell 會完成該作業佇列中擱置的所有工作,然後結束作業。 提交此命令之後,不會將任何新工作新增至佇列。
此 Cmdlet 不會刪除背景工作。 若要刪除作業,請使用 Remove-Job Cmdlet。
從 Windows PowerShell 3.0 開始,Stop-Job 也會停止自定義作業類型,例如 WorkflowJobs 和 ScheduledJobs實例。 若要讓 Stop-Job 停止具有自定義作業類型的作業,請在執行 Stop-Job 命令之前,先將支援自定義作業類型的模組匯入會話,方法是使用 Import-Module Cmdlet 或使用 或取得模組中的 Cmdlet。 如需特定自定義作業類型的相關信息,請參閱自定義作業類型功能的檔。
範例
範例 1:使用 Invoke-Command 停止遠端電腦上的作業
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
此範例示範如何使用 Stop-Job Cmdlet 來停止遠端電腦上執行的工作。
由於作業是使用 Invoke-Command Cmdlet 從遠端執行 Start-Job 命令,因此作業物件會儲存在遠端電腦上。 您必須使用另一個 Invoke-Command 命令,從遠端執行 Stop-Job 命令。 如需遠端背景工作的詳細資訊,請參閱about_Remote_Jobs。
第一個命令會在 Server01 計算機上建立 PowerShell 會話(PSSession),然後將會話物件儲存在 $s 變數中。 此命令會使用網域系統管理員的認證。
第二個命令會使用 Invoke-Command Cmdlet 在工作階段中執行 Start-Job 命令。 作業中的 命令會取得系統事件記錄檔中的所有事件。 產生的作業物件會儲存在 $j 變數中。
第三個命令會停止作業。 它會使用 Invoke-Command Cmdlet 在 Server01 Stop-Job 中執行 命令。 由於作業物件會儲存在本機計算機上的 $j中,因此命令會使用 Using 範圍修飾詞來識別 $j 為局部變數。 如需有關 使用 範圍修飾詞的詳細資訊,請參閱 about_Remote_Variables。
當命令完成時,作業會停止,且 可供使用。
範例 2:停止背景工作
Stop-Job -Name "Job1"
此命令會停止 Job1 背景工作。
範例 3:停止數個背景工作
Stop-Job -Id 1, 3, 4
此命令會停止三個作業。 它會依其 標識碼來識別它們。
範例 4:停止所有背景工作
Get-Job | Stop-Job
此命令會停止目前會話中的所有背景工作。
範例 5:停止所有封鎖的背景工作
Stop-Job -State Blocked
此命令會停止封鎖的所有作業。
範例 6:依實例標識符停止作業
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
這些命令示範如何根據其 InstanceID來停止作業。
第一個命令會使用 Get-Job Cmdlet 來取得目前工作階段中的作業。 命令會使用管線運算符 (|) 將作業傳送至 Format-Table 命令,以顯示每個作業之指定屬性的數據表。 數據表包含每個作業的 InstanceID。 它會使用匯出屬性來顯示作業狀態。
第二個命令會使用具有 Stop-Job 參數的 命令來停止選取的作業。
範例 7:停止遠端電腦上的作業
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...
此範例示範如何使用 Stop-Job Cmdlet 來停止遠端電腦上執行的工作。
由於作業是以 Cmdlet 的 Invoke-Command 參數啟動,因此即使作業是在遠端電腦上執行,Job 物件仍位於本機計算機上。 因此,您可以使用本機 Stop-Job 命令來停止作業。
第一個命令會使用 Invoke-Command Cmdlet 在 Server01 計算機上啟動背景工作。 此命令會使用 AsJob 參數,以背景工作的形式執行遠端命令。
此命令會傳回作業物件,此物件與 Start-Job Cmdlet 傳回的作業物件相同。
命令會將作業物件儲存在 $j 變數中。
第二個命令會使用管線運算子,將 $j 變數中的作業傳送至 Stop-Job。 此命令會使用 PassThru 參數來指示 Stop-Job 傳回作業物件。 作業物件顯示會確認作業的狀態為 [已停止]。
如需遠端背景工作的詳細資訊,請參閱 about_Remote_Jobs。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
指定條件的哈希表。 此 Cmdlet 會停止滿足每個條件的工作。 輸入哈希表,其中索引鍵是作業屬性,而值是作業屬性值。
此參數僅適用於自訂作業類型,例如 WorkflowJobs 和 ScheduledJobs。 它不適用於標準背景工作,例如使用 Start-Job Cmdlet 所建立的工作。
如需此參數支援的相關信息,請參閱作業類型的說明主題。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | Hashtable |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
FilterParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Id
指定此 Cmdlet 停止之作業的識別碼。 預設為目前會話中的所有作業。
識別碼是整數,能夠唯一識別目前會話中的任務。 比實例 ID 更容易記住和輸入,但只在當前會話中是唯一的。 您可以輸入一或多個識別碼,並以逗號分隔。 若要尋找作業的識別碼,請輸入 Get-Job。
參數屬性
| 類型: | Int32[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
SessionIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-InstanceId
指定此 Cmdlet 停止之作業的實例識別碼。 預設值為所有工作。
實例標識碼是可唯一識別計算機上作業的 GUID。 若要尋找作業的實體識別碼,請使用 Get-Job。
參數屬性
| 類型: | Guid[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InstanceIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Job
指定此 Cmdlet 停止的工作。 輸入包含作業的變數或用來取得作業的命令。 您也可以使用管線運算符將作業提交至 Stop-Job Cmdlet。 根據預設,Stop-Job 會刪除目前工作階段中啟動的所有作業。
參數屬性
| 類型: | Job[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
JobParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Name
指定此 Cmdlet 停止的易記作業名稱。 在逗號分隔清單中輸入作業名稱,或使用通配符 (*) 來輸入作業名稱模式。 根據預設,Stop-Job 會停止在目前會話中建立的所有作業。
由於易記名稱不保證是唯一的,因此在依名稱停止作業時,請使用 whatIf
參數屬性
| 類型: | String[] |
| 預設值: | All jobs |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
NameParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-PassThru
返回一個物件,代表您正在處理的項目。 根據預設,此 Cmdlet 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-State
指定作業狀態。 此 Cmdlet 只會停止處於指定狀態的作業。 此參數可接受的值為:
NotStartedRunningCompletedFailedStoppedBlockedSuspendedDisconnectedSuspendingStopping
如需作業狀態的詳細資訊,請參閱 JobState 列舉。
參數屬性
| 類型: | JobState |
| 預設值: | All jobs |
| 接受的值: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
StateParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 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。
輸入
System.Management.Automation.RemotingJob
您可以使用管線將作業物件傳送到此 Cmdlet。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
System.Management.Automation.PSRemotingJob
當您使用 PassThru 參數時,這個 Cmdlet 會傳回作業物件。
備註
PowerShell 包含下列 Stop-Job的別名:
- 所有平臺:
spjb