Resume-Job
重新啟動暫停的工作。
語法
Resume-Job
[-Wait]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Resume-Job
[-Job] <Job[]>
[-Wait]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Resume-Job
[-Wait]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Resume-Job
[-Wait]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Resume-Job
[-Wait]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Resume-Job
[-Wait]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Resume-Job Cmdlet 會繼續暫停的工作流程工作,例如使用 Suspend-Job Cmdlet 或 about_Suspend-Workflow 活動。 當工作流程作業繼續時,作業引擎會重新建構已儲存資源的狀態、元數據和輸出,例如檢查點。 作業會重新啟動,而不會遺失狀態或數據。 作業狀態已從 Suspended 變更為 Running。
使用 Resume-Job 的參數,依名稱、標識碼、實例識別碼或管道選取作業物件,例如 Get-Job Cmdlet 所傳回的作業,以 Resume-Job。 您也可以使用屬性篩選來選取要繼續的工作。
根據預設,Resume-Job 會立即傳回,即使可能尚未繼續所有作業也一樣。 若要隱藏命令提示字元,直到所有指定的作業繼續為止,請使用 Wait 參數。
Resume-Job Cmdlet 僅適用於自定義作業類型,例如工作流程作業。 它不適用於標準背景工作,例如使用 Start-Job Cmdlet 啟動的工作。 如果您提交不支援類型的作業,Resume-Job 會產生終止錯誤並停止執行。
若要識別工作流程作業,請在作業的 PSJobTypeName 屬性中尋找 PSWorkflowJob 的值。 若要判斷特定自定義作業類型是否支援 Resume-Job Cmdlet,請參閱自定義作業類型的說明主題。
在自定義作業類型上使用作業 Cmdlet 之前,請先使用 Import-Module Cmdlet 或取得或使用模組中的 Cmdlet,匯入支援自定義作業類型的模組。
此 Cmdlet 已在 Windows PowerShell 3.0 中引進。
範例
範例 1:依標識符繼續作業
The first command uses the **Get-Job** cmdlet to get the job. The output shows that the job is a suspended workflow job.
PS C:\> Get-Job EventJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 EventJob PSWorkflowJob Suspended True Server01 \\Script\Share\Event.ps1
The second command uses the *Id* parameter of the **Resume-Job** cmdlet to resume the job with an *Id* value of 4.
PS C:\> Resume-Job -Id 4
此範例中的命令會確認作業是暫停的工作流程作業,然後繼續作業。
範例 2:依名稱繼續作業
PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest*
此命令會使用 Name 參數,在本機計算機上繼續執行數個工作流程作業。
範例 3:使用自訂屬性值
PS C:\> Resume-Job -Filter @{CustomID="T091291"} -State Suspended
此命令會使用自定義屬性的值來識別要繼續的工作流程作業。 它會使用 Filter 參數,透過其 CustomID 屬性來識別工作流程作業。 它也會使用 State 參數,在嘗試繼續工作流程作業之前,先確認工作流程作業已暫停。
範例 4:繼續遠端電腦上所有暫停的工作
PS C:\> Invoke-Command -ComputerName Srv01 -ScriptBlock {Get-Job -State Suspended | Resume-Job}
此命令會繼續 Srv01 遠端電腦上的所有暫停作業。
此命令會使用 Invoke-Command Cmdlet 在 Srv01 計算機上執行命令。 遠端命令會使用 Get-Job Cmdlet State 參數,取得電腦上所有暫止的工作。 管線運算符 (|) 會將暫止的工作傳送至繼續作業 Resume-Job Cmdlet,以繼續作業。
範例 5:等候作業繼續
PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest* -Wait
此命令會使用 Wait 參數,指示 Resume-Job 只有在所有指定的作業都恢復之後才會傳回。 Wait 參數在腳本繼續前假設作業繼續的腳本中特別有用。
範例 6:繼續暫停本身的工作流程
This code sample shows the **Suspend-Workflow** activity in a workflow.
#SampleWorkflow
Workflow Test-Suspend
{
$a = Get-Date
Suspend-Workflow
(Get-Date)- $a
}
The following command runs the Test-Suspend workflow on the Server01 computer.When you run the workflow, the workflow runs the Get-Date activity and stores the result in the $a variable. Then it runs the Suspend-Workflow activity. In response, it takes a checkpoint, suspends the workflow, and returns a workflow job object. Suspend-Workflow returns a workflow job object even if the workflow is not explicitly run as a job.
PS C:\> Test-Suspend -PSComputerName Server01
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
8 Job8 PSWorkflowJob Suspended True Server01 Test-Suspend
The following command resumes the Test-Suspend workflow in Job8. It uses the *Wait* parameter to hold the command prompt until the job is resumed.
PS C:\> Resume-Job -Name "Job8" -Wait
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
8 Job8 PSWorkflowJob Running True Server01 Test-Suspend
This command uses the **Receive-Job** cmdlet to get the results of the Test-Suspend workflow. The final command in the workflow returns a **TimeSpan** object that represents the elapsed time between the current date and time and the date and time that was saved in the $a variable before the workflow was suspended.
PS C:\> Receive-Job -Name Job8
Days : 0
Hours : 0
Minutes : 0
Seconds : 19
Milliseconds : 823
Ticks : 198230041
TotalDays : 0.000229432917824074
TotalHours : 0.00550639002777778
TotalMinutes : 0.330383401666667
TotalSeconds : 19.8230041
TotalMilliseconds : 19823.0041
PSComputerName : Server01
Resume-Job Cmdlet 可讓您使用 Suspend-Workflow 活動繼續暫停的工作流程工作。 此活動會從工作流程內暫停工作流程。 只有在工作流程中才有效。
如需 Suspend-Workflow 的相關信息,請參閱 about_Suspend-Workflow。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Filter
指定條件的哈希表。 此 Cmdlet 會繼續符合哈希表中所有條件的工作。 輸入哈希表,其中索引鍵是作業屬性,而值是作業屬性值。
類型: | Hashtable |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Id
指定此 Cmdlet 繼續作業的識別子陣列。
標識碼是整數,可唯一識別目前會話中的作業。 比實例標識碼更容易記住和輸入,但只在目前的會話中是唯一的。 您可以輸入一或多個識別碼,並以逗號分隔。 若要尋找作業的識別碼,請執行 Get-Job。
類型: | Int32[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-InstanceId
指定此 Cmdlet 繼續執行之作業實例識別碼的陣列。 預設值為所有作業。
實例標識碼是可唯一識別計算機上作業的 GUID。 若要尋找作業的實例識別碼,請執行 Get-Job。
類型: | Guid[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Job
指定要繼續的工作。 輸入包含作業的變數,或取得作業的命令。 您也可以使用管線將作業傳送至 Resume-Job Cmdlet。
類型: | Job[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Name
指定此 Cmdlet 繼續的易記作業名稱陣列。 輸入一或多個作業名稱。 允許通配符。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-State
指定要繼續的作業狀態。 此參數可接受的值為:
- NotStarted
- 運行
- 完成
- 失敗
- 停止
- 封鎖
- 暫停
- 斷開
- 暫停
- 停止
此 Cmdlet 只會繼續處於暫停 狀態
如需作業狀態的詳細資訊,請參閱 MSDN 連結庫中的 JobState 列舉。
類型: | JobState |
接受的值: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Wait
表示此 Cmdlet 會隱藏命令提示字元,直到重新啟動所有作業結果為止。 根據預設,此 Cmdlet 會立即傳回可用的結果。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將所有類型的作業傳送至此 Cmdlet。 如果 Resume-Job 取得不支援類型的作業,則會傳回終止錯誤。
輸出
None, System.Management.Automation.Job
如果您使用 passThru 參數,此 Cmdlet 會傳回它嘗試繼續的作業。 否則,此 Cmdlet 不會產生任何輸出。
備註
- Resume-Job 只能繼續暫停的工作。 如果您以不同的狀態提交作業,Resume-Job 在作業上執行繼續作業,但會產生警告,通知您無法繼續作業。 若要隱藏警告,請使用 WarningAction common 參數搭配 SilentlyContinue 值。
- 如果作業不是支持繼續的類型,例如工作流程作業(PSWorkflowJob),Resume-Job 會傳回終止錯誤。
- 儲存暫停作業的機制和位置可能會因作業類型而異。 例如,暫停的工作流程工作預設會儲存在一般檔案存放區中,但也可以儲存在 SQL 資料庫中。
- 當您繼續作業時,作業狀態會從 Suspended 變更為 Running。 若要尋找執行中的工作,包括此 Cmdlet 所繼續的工作,請使用 Get-Job Cmdlet 的 State 參數,以取得處於 執行中 狀態的作業。
- 某些作業類型有選項或屬性,可防止 Windows PowerShell 暫停作業。 如果嘗試暫停作業失敗,請確認作業選項和屬性允許暫停。