共用方式為


Suspend-Job

暫時停止工作流程作業。

語法

SessionIdParameterSet (預設值)

Suspend-Job
    [-Id] <Int32[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Suspend-Job
    [-Job] <Job[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Suspend-Job
    [-Filter] <Hashtable>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Suspend-Job
    [-State] <JobState>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Suspend-Job
    [-InstanceId] <Guid[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Suspend-Job
    [-Name] <String[]>
    [-Force]
    [-Wait]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

Suspend-Job Cmdlet 會暫停工作流程作業。 暫止表示暫時中斷或暫停工作流程作業。 此 Cmdlet 可讓執行工作流程的用戶暫停工作流程。 它補充 Suspend-Workflowhttps://go.microsoft.com/fwlink/?LinkId=267141 活動,這是工作流程中暫停工作流程的命令。

Suspend-Job Cmdlet 僅適用於工作流程工作。 它不適用於標準背景工作,例如使用 Start-Job Cmdlet 啟動的工作。

若要識別工作流程作業,請在作業的 PSJobTypeName 屬性中尋找 PSWorkflowJob 的值。 若要判斷特定自定義作業類型是否支援 Suspend-Job Cmdlet,請參閱自定義作業類型的說明主題。

當您暫停工作流程作業時,工作流程作業會執行至下一個檢查點、暫止,然後立即傳回工作流程作業物件。 若要等候暫停在取得作業之前完成,請使用 Suspend-Job 或 Wait-Job Cmdlet 的 Wait 參數。 當工作流程作業暫停時,作業的 State 屬性值會暫止。

暫停正確依賴檢查點。 目前的作業狀態、元數據和輸出會儲存在檢查點中,以便繼續工作流程作業,而不會遺失狀態或數據。 如果工作流程作業沒有檢查點,就無法正確暫停。 若要將檢查點新增至您執行的工作流程,請使用 PSPersist 工作流程通用參數。 您可以使用 Force 參數,立即暫停任何工作流程作業,以及暫停沒有檢查點的工作流程作業,但動作可能會導致狀態和數據遺失。

在自定義作業類型上使用作業 Cmdlet 之前,例如工作流程作業(PSWorkflowJob)匯入支援自定義作業類型的模組,方法是使用 Import-Module Cmdlet 或使用 模組中的 Cmdlet。

此 Cmdlet 已在 Windows PowerShell 3.0 中引進。

範例

範例 1:依名稱暫停工作流程作業

The first command creates the Get-SystemLog workflow. The workflow uses the CheckPoint-Workflow activity to define a checkpoint in the workflow.
#Sample WorkflowWorkflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}

The second command uses the *AsJob* parameter that is common to all workflows to run the Get-SystemLog workflow as a background job. The command uses the *JobName* workflow common parameter to specify a friendly name for the workflow job.
PS C:\> Get-SystemLog -AsJob -JobName "Get-SystemLogJob"

The third command uses the **Get-Job** cmdlet to get the Get-SystemLogJob workflow job. The output shows that the value of the **PSJobTypeName** property is PSWorkflowJob.
PS C:\> Get-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Running     True            localhost   Get-SystemLog

The fourth command uses the **Suspend-Job** cmdlet to suspend the Get-SystemLogJob job. The job runs to the checkpoint and then suspends.
PS C:\> Suspend-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Suspended   True            localhost   Get-SystemLog

此範例示範如何暫停工作流程作業。

範例 2:暫停和繼續工作流程工作

The first command suspends the LogWorkflowJob job.The command returns immediately. The output shows that the workflow job is still running, even though it is being suspended.
PS C:\> Suspend-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

The second command uses the **Get-Job** cmdlet to get the LogWorkflowJob job. The output shows that the workflow job suspended successfully.
PS C:\> Get-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Suspended     True            localhost            LogWorkflow

The third command uses the **Get-Job** cmdlet to get the LogWorkflowJob job and the Resume-Job cmdlet to resume it. The output shows that the workflow job resumed successfully and is now running.
PS C:\> Get-Job -Name LogWorkflowJob | Resume-Job
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

此範例示範如何暫停和繼續工作流程作業。

範例 3:在遠端電腦上暫停工作流程作業

PS C:\> Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}

此命令會使用 Invoke-Command Cmdlet 暫停 Srv01 遠端電腦上的工作流程作業。 Filter 參數的值是指定 CustomID 值的哈希表。 此 CustomID 為作業元數據(PSPrivateMetadata)。

範例 4:等候工作流程工作暫停

PS C:\> Suspend-Job VersionCheck -Wait
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
 5     VersionCheck  PSWorkflowJob      Suspended     True            localhost            LogWorkflow

此命令會暫停 VersionCheck 工作流程作業。 命令會使用 Wait 參數等待工作流程作業暫停為止。 當工作流程作業執行至下一個檢查點並暫停時,命令會完成並傳回作業物件。

範例 5:強制工作流程作業暫停

PS C:\> Suspend-Job Maintenance -Force

此命令會強制暫停維護工作流程作業。 維護作業沒有檢查點。 無法正確暫停,而且可能無法正確繼續。

參數

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:cf

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Filter

指定條件的哈希表。 此 Cmdlet 會暫停符合所有條件的工作。 輸入哈希表,其中索引鍵是作業屬性,而值是作業屬性值。

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False

參數集

FilterParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Force

立即暫停工作流程作業。 此動作可能會導致狀態和數據遺失。

根據預設,Suspend-Job 可讓工作流程作業執行到下一個檢查點,然後暫停它。 您也可以使用此參數來暫停沒有檢查點的工作流程作業。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:F

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Id

指定此 Cmdlet 暫停之作業的識別碼。

識別碼是整數,能夠唯一識別目前會話中的任務。 比實例標識碼更容易記住和輸入,但只在目前的會話中是唯一的。 您可以輸入一或多個識別碼,並以逗號分隔。 若要尋找作業的標識碼,請使用 Get-Job Cmdlet。

參數屬性

類型:

Int32[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

SessionIdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-InstanceId

指定此 Cmdlet 暫停之作業的實例識別碼。 預設值為所有工作。

實例標識碼是可唯一識別計算機上作業的 GUID。 若要尋找作業的實體識別碼,請使用 Get-Job

參數屬性

類型:

Guid[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

InstanceIdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Job

指定此 Cmdlet 停止的工作流程作業。 輸入包含工作流程作業的變數,或取得工作流程作業的命令。 您也可以使用管線將工作流程作業傳送至 Suspend-Job Cmdlet。

參數屬性

類型:

Job[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

JobParameterSet
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Name

指定這個 Cmdlet 暫停之作業的易記名稱。 輸入一或多個工作流程作業名稱。 支援通配符。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

NameParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-State

指定作業狀態。 此 Cmdlet 只會停止處於指定狀態的作業。 此參數可接受的值為:

  • 尚未開始
  • 跑步
  • 完成
  • 失敗
  • 已停止
  • 已封鎖
  • 已暫停
  • 已中斷連線
  • 暫停中
  • 停止中

Suspend-Job 只會暫停處於 執行中 狀態的工作流程作業。

如需作業狀態的詳細資訊,請參閱 MSDN 連結庫中的 JobState 列舉

參數屬性

類型:JobState
預設值:None
接受的值:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
支援萬用字元:False
不要顯示:False

參數集

StateParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Wait

表示此 Cmdlet 會隱藏命令提示字元,直到工作流程作業處於暫停狀態為止。 根據預設,Suspend-Job 會立即傳回,即使工作流程作業尚未處於暫停狀態也一樣。

Wait 參數相當於將 Suspend-Job 命令管線傳送至 Wait-Job Cmdlet。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值: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

輸入

Job

您可以使用管線將所有類型的作業傳送至此 Cmdlet。 不過,如果 Suspend-Job 取得不支援類型的作業,則會傳回終止錯誤。

輸出

Job

此 Cmdlet 會傳回暫停的作業。

備註

  • 儲存暫停作業的機制和位置可能會因作業類型而異。 例如,暫停的工作流程工作預設會儲存在一般檔案存放區中,但也可以儲存在資料庫中。

  • 如果您提交未處於執行狀態的工作流程作業,Suspend-Job 會顯示警告訊息。 若要隱藏警告,請使用 WarningAction common 參數搭配 SilentlyContinue 值。

    如果作業不是支持暫停的類型,Suspend-Job 會傳回終止錯誤。

  • 若要尋找暫停的工作流程工作,包括此 Cmdlet 所暫止的工作流程工作,請使用 Get-Job Cmdlet 的 State 參數,以取得處於 Suspended 狀態的工作流程工作。

  • 某些作業類型有選項或屬性,可防止 Windows PowerShell 暫停作業。 如果嘗試暫停作業失敗,請確認作業選項和屬性允許暫停。