Suspend-Job
暫時停止工作流程作業。
語法
Suspend-Job
[-Force]
[-Wait]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Job] <Job[]>
[-Force]
[-Wait]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdlet 會 Suspend-Job
暫停工作流程作業。 暫止表示暫時中斷或暫停工作流程作業。 此 Cmdlet 可讓執行工作流程的用戶暫停工作流程。 它補充 Suspend-Workflowhttps://go.microsoft.com/fwlink/?LinkId=267141 活動,這是暫停工作流程之工作流程中的命令。
Cmdlet Suspend-Job
僅適用於工作流程工作。 它不適用於標準背景工作,例如使用 Cmdlet 所啟動的背景 Start-Job
工作。
若要識別工作流程作業,請在作業的 PSJobTypeName 屬性中尋找 PSWorkflowJob 的值。 若要判斷特定自定義作業類型是否支援 Suspend-Job
Cmdlet,請參閱自定義作業類型的說明主題。
當您暫停工作流程作業時,工作流程作業會執行至下一個檢查點、暫止,然後立即傳回工作流程作業物件。 若要等候暫停在取得作業之前完成,請使用 或 Cmdlet 的 Wait-Job
Wait 參數Suspend-Job
。 當工作流程作業暫停時,作業的 State 屬性值為 Suspended。
暫停正確依賴檢查點。 目前的作業狀態、元數據和輸出會儲存在檢查點中,以便繼續工作流程作業,而不會遺失狀態或數據。 如果工作流程作業沒有檢查點,就無法正確暫停。 若要將檢查點新增至您執行的工作流程,請使用 PSPersist 工作流程一般參數。 您可以使用 Force 參數立即暫停任何工作流程作業,以及暫停沒有檢查點的工作流程作業,但動作可能會導致狀態和數據遺失。
在自定義作業類型上使用作業 Cmdlet 之前,例如工作流程作業 (PSWorkflowJob) 會匯入支援自定義作業類型的模組,方法是使用 Import-Module
Cmdlet 或使用 模組中的 Cmdlet。
此 Cmdlet 已在 Windows PowerShell 3.0 中引進。
範例
範例 1:依名稱暫停工作流程作業
此範例示範如何暫停工作流程作業。
第一個命令會 Get-SystemLog
建立工作流程。 工作流程會使用 CheckPoint-Workflow
活動來定義工作流程中的檢查點。
第二個命令會使用所有工作流程通用的 AsJob 參數,以背景工作的形式執行 Get-SystemLog
工作流程。 此命令會 使用 JobName 工作流程通用參數來指定工作流程作業的易記名稱。
第三個命令會 Get-Job
使用 Cmdlet 來取得 LogflowJob
工作流程作業。 輸出會顯示 PSJobTypeName 屬性的值是 PSWorkflowJob。
第四個命令會 Suspend-Job
使用 Cmdlet 來暫停 LogflowJob
作業。 作業會執行至檢查點,然後暫停。
#Sample Workflow
Workflow Get-SystemLog
{
$Events = Get-WinEvent -LogName System
CheckPoint-Workflow
InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}
Get-SystemLog -AsJob -JobName "LogflowJob"
Get-Job -Name LogflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 LogflowJob PSWorkflowJob Running True localhost Get-SystemLog
Suspend-Job -Name LogflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 LogflowJob PSWorkflowJob Suspended True localhost Get-SystemLog
範例 2:暫停和繼續工作流程工作
此範例示範如何暫停和繼續工作流程作業。
第一個命令會暫停LogWorkflowJob作業。命令會立即傳回。 輸出會顯示工作流程作業仍在執行中,即使它正在暫停也一樣。
第二個命令會 Get-Job
使用 Cmdlet 來取得 LogWorkflowJob 作業。 輸出會顯示工作流程作業已成功暫停。
第三個命令會 Get-Job
使用 Cmdlet 來取得 LogWorkflowJob 作業和 Resume-Job
Cmdlet 以繼續作業。 輸出顯示工作流程作業已成功繼續,且目前正在執行中。
Suspend-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
Get-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Suspended True localhost LogWorkflow
Get-Job -Name LogWorkflowJob | Resume-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
範例 3:在遠端電腦上暫停工作流程作業
Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}
此命令會 Invoke-Command
使用 Cmdlet 在 Srv01 遠端電腦上暫停工作流程作業。 Filter 參數的值是指定 CustomID 值的哈希表。
此 CustomID 是作業元數據 (PSPrivateMetadata)。
範例 4:等候工作流程工作暫停
Suspend-Job VersionCheck -Wait
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
5 VersionCheck PSWorkflowJob Suspended True localhost LogWorkflow
此命令會暫停 VersionCheck 工作流程作業。 此命令會 使用 Wait 參數來等候工作流程作業暫停為止。 當工作流程作業執行至下一個檢查點並暫停時,命令會完成並傳回作業物件。
範例 5:強制工作流程作業暫停
Suspend-Job Maintenance -Force
此命令會強制暫停維護工作流程作業。 維護作業沒有檢查點。 無法正確暫停,而且可能無法正確繼續。
參數
-Confirm
執行 Cmdlet 之前先提示您確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Filter
指定條件的哈希表。 此 Cmdlet 會暫停符合所有條件的工作。 輸入哈希表,其中索引鍵是作業屬性,而值是作業屬性值。
類型: | Hashtable |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Force
立即暫停工作流程作業。 此動作可能會導致狀態和數據遺失。
根據預設, Suspend-Job
讓工作流程作業執行到下一個檢查點,然後暫停它。
您也可以使用此參數來暫停沒有檢查點的工作流程作業。
類型: | SwitchParameter |
別名: | F |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Id
指定此 Cmdlet 暫停之作業的識別碼。
標識碼是整數,可唯一識別目前會話中的作業。 比實例標識碼更容易記住和輸入,但只在目前的會話中是唯一的。 您可以輸入一或多個識別碼,並以逗號分隔。 若要尋找作業的標識碼,請使用 Get-Job
Cmdlet。
類型: | Int32[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-InstanceId
指定此 Cmdlet 暫停之作業的實例識別碼。 預設值為所有作業。
實例標識碼是可唯一識別計算機上作業的 GUID。 若要尋找作業的實體識別碼,請使用 Get-Job
。
類型: | Guid[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Job
指定此 Cmdlet 停止的工作流程作業。 輸入包含工作流程作業的變數,或取得工作流程作業的命令。 您也可以使用管線將工作流程作業傳送至 Suspend-Job
Cmdlet。
類型: | Job[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Name
指定這個 Cmdlet 暫停之作業的易記名稱。 輸入一或多個工作流程作業名稱。 支援使用萬用字元。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-State
指定作業狀態。 此 Cmdlet 只會停止處於指定狀態的作業。 此參數可接受的值為:
- 未開始
- 執行中
- 已完成
- 失敗
- 已停止
- 封鎖
- 暫止
- 已中斷連接
- 暫停中
- 正在停止
Suspend-Job
只會暫停處於執行中狀態的工作流程作業。
如需作業狀態的詳細資訊,請參閱 JobState 列舉。
類型: | JobState |
接受的值: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Wait
表示此 Cmdlet 會隱藏命令提示字元,直到工作流程作業處於暫停狀態為止。 根據預設, Suspend-Job
即使工作流程作業尚未處於暫停狀態,仍會立即傳回 。
Wait 參數相當於將Suspend-Job
命令管線傳送至 Wait-Job
Cmdlet。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將所有類型的作業傳送至此 Cmdlet。 不過,如果 Suspend-Job
取得不支援類型的作業,則會傳回終止錯誤。
輸出
此 Cmdlet 會傳回暫停的作業。
備註
Windows PowerShell 包含下列的 Suspend-Job
別名:
sujb
儲存暫停作業的機制和位置可能會因作業類型而異。 例如,暫停的工作流程工作預設會儲存在一般檔案存放區中,但也可以儲存在資料庫中。
如果您提交未處於執行狀態的工作流程作業, Suspend-Job
會顯示警告訊息。 若要隱藏警告,請使用 WarningAction 一般參數搭配 SilentlyContinue 值。
如果作業不是支持暫停的類型, Suspend-Job
則傳回終止錯誤。
若要尋找暫止的工作流程工作,包括此 Cmdlet 所暫止的Get-Job
工作流程工作,請使用 Cmdlet 的 State 參數來取得處於暫止狀態的工作流程作業。
某些作業類型有選項或屬性,可防止 Windows PowerShell 暫停作業。 如果嘗試暫停作業失敗,請確認作業選項和屬性允許暫停。