共用方式為


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

輸入

Job

您可以使用管線將所有類型的作業傳送至此 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 暫停作業。 如果嘗試暫停作業失敗,請確認作業選項和屬性允許暫停。