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 停止所有工作,或根據名稱、ID、實例 ID 或狀態停止選取的作業,或是將工作物件傳給 Stop-Job。
你可以用來 Stop-Job 停止背景工作,例如使用 Start-Job 任何 cmdlet 或 AsJob 參數啟動的作業。 當你停止背景工作時,PowerShell 會完成該工作佇列中所有待處理的任務,然後結束該工作。 此指令提交後,隊列中不會新增任務。
這個指令檔不會刪除背景工作。 若要刪除作業,請使用 Remove-Job Cmdlet。
從 PowerShell 3.0 Windows 開始,Stop-Job 也會停止自訂工作類型,例如 WorkflowJobs 以及 ScheduledJobs 的實例。 要啟用 Stop-Job 使用自訂工作類型的工作,請在執行 Stop-Job 指令前,將支援該自訂工作類型的模組匯入會話,可以是使用 Import-Module cmdlet 或在模組中取得或取得 cmdlet。 關於特定自訂工作類型的資訊,請參閱該自訂工作類型功能的說明文件。
範例
範例一:在遠端電腦上停止工作,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 停止遠端電腦上執行的工作。
由於工作是以遠端執行Start-Job指令的指令碼(cmdlet)啟動Invoke-Command,工作物件會儲存在遠端電腦上。 你必須使用另一個 Invoke-Command 指令才能遠端執行 Stop-Job 指令。 欲了解更多遠端背景工作資訊,請參見about_Remote_Jobs。
第一個指令會在 Server01 電腦上建立一個 PowerShell 會話(PSSession),然後將會話物件儲存在變數中 $s 。 此指令使用網域管理員的憑證。
第二個指令使用 Invoke-Command cmdlet 在會話中執行指令 Start-Job 。 工作中的指令會取得系統事件日誌中的所有事件。 產生的工作物件會儲存在變數中 $j 。
第三個指令停止了工作。 它使用 Invoke-Command cmdlet 在 Server01 的 PSSession 中執行Stop-Job指令。 由於工作物件儲存在 $j,是本地電腦上的變數,指令會使用 Using: 作用域修飾符來識別 $j 為本地變數。 如需有關範圍修飾詞的詳細資訊Using:,請參閱about_Remote_Variables。
指令結束後,工作會停止, PSSession$s in 即可使用。
範例二:停止一個背景工作
Stop-Job -Name "Job1"
此指令會停止背景工作。Job1
範例三:停止多個背景工作
Stop-Job -Id 1, 3, 4
此指令可停止三個任務。 它透過 身份證來識別他們。
範例四:停止所有背景工作
Get-Job | Stop-Job
此指令會停止目前會話中所有背景工作。
範例 5:停止所有被封鎖的背景工作
Stop-Job -State Blocked
此指令會停止所有被阻擋的工作。
範例 6:透過實例 ID 停止工作
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 帶有 InstanceId 參數的指令來停止所選工作。
範例 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-CommandAsJob 參數啟動,工作物件位於本地電腦上,儘管工作在遠端電腦上執行。 因此,你可以用本地 Stop-Job 指令停止工作。
第一個指令使用 Invoke-Command cmdlet 在 Server01 電腦上啟動背景工作。 指令使用 AsJob 參數來執行遠端指令作為背景工作。
此指令回傳一個工作物件,該物件與 cmdlet 回傳的工作物件 Start-Job 相同。
指令會將工作物件儲存在變數中 $j 。
第二個指令使用管線運算子將變數中的 $j 作業傳送到 Stop-Job。 指令使用 PassThru 參數來指示 Stop-Job 返回工作物件。 工作物件顯示確認工作狀態為停止。
如需遠端背景工作的詳細資訊,請參閱 about_Remote_Jobs。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 參見 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
指定條件雜湊表。 這個指令長會停止滿足所有條件的工作。 輸入一個雜湊表,鍵為工作屬性,值為工作屬性值。
此參數僅適用於自訂工作類型,如 WorkflowJobs 與 ScheduledJobs。 它無法用於標準的背景工作,例如使用 Start-Job 指令長所建立的。
關於此參數的支援資訊,請參閱工作類型的說明主題。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | Hashtable |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
FilterParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Id
指定此指令子所停止的工作 ID。 預設是目前會話中的所有工作。
ID 是一個整數,唯一識別當前工作階段的工作。 它比實例 ID 更容易記憶和輸入,但它只在當前會話中唯一。 你可以輸入一個或多個ID,並以逗號分隔。 要找到職缺的 ID,請輸入 Get-Job。
參數屬性
| 類型: | Int32[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
SessionIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-InstanceId
指定此指令子停止的作業實例 ID。 預設是全部工作。
實例 ID 是一個 GUID,唯一識別電腦上的工作。 要找到作業的實例 ID,請使用 Get-Job。
參數屬性
| 類型: | Guid[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InstanceIdParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Job
指定此指令本會停止的工作。 輸入包含工作項目的變數或取得工作指令。 你也可以用管線操作員把工作提交到 Stop-Job cmdlet。 預設情況下,會 Stop-Job 刪除目前工作階段中所有已啟動的工作。
參數屬性
| 類型: | Job[] |
| 預設值: | All jobs |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
JobParameterSet
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Name
指定這個指令子會停止的工作名稱。 請以逗號分隔的清單輸入職務名稱,或使用萬用字元(*)來輸入職務名稱模式。 預設情況下, Stop-Job 會停止目前會階段中所有產生的工作。
由於友善名稱不保證唯一,停止工作名稱時請使用 WhatIf 和 Confirm 參數。
參數屬性
| 類型: | 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
指定工作狀態。 此指令檔只會停止指定狀態下的作業。 此參數可接受的值為:
NotStartedRunningCompletedFailedStoppedBlockedSuspendedDisconnectedSuspendingStopping
欲了解更多就業狀態資訊,請參閱 JobState Enumeration。
參數屬性
| 類型: | 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