about_Suspend-Workflow

簡単な説明

アクティビティが表示されるワークフローを中断する Suspend-Workflow アクティビティについて説明します。

詳細な説明

Suspend-Workflow アクティビティは、ワークフロー内からのワークフロー処理を一時的に停止します。 中断する前に、Windows PowerShell ワークフローはチェックポイントを取得するため、ワークフローの状態とデータは保持され、ワークフローは中断ポイントから再開できます。

ワークフローを再開するには、ワークフローを実行しているユーザーが Resume-Job コマンドレットを使用します。 ワークフロー内からワークフローを再開することはできません。

構文

workflow <Verb-Noun>
{
    Suspend-Workflow
}

詳しい説明

Suspend-Workflowはワークフローを一時的に停止し、ワークフロー ジョブを表すジョブ オブジェクトを返します。 ワークフローをジョブとして実行しなかった場合でも、ジョブ オブジェクトが返されます。 たとえば、 AsJob ワークフロー共通パラメーターを使用するなどです。 ジョブの状態は Suspended です。

ジョブ コマンドレットを使用して、中断されたワークフロー ジョブを管理できます。 ワークフロー ジョブを再開するには、 Resume-Job コマンドレットを使用します。

ワークフロー ジョブを再開すると、ワークフローは、 Suspend-Workflow アクティビティに続くコマンドで再開されます。

たとえば、次のワークフローには、 Suspend-Workflow アクティビティが含まれています。 ワークフローを実行すると、 Get-Date アクティビティが実行され、その出力が $a 変数に保存され、ワークフローが中断され、中断されたワークフローを表すジョブ オブジェクトが返されます。 ジョブの種類は PSWorkflowJob です。

Get-Jobなどのジョブ コマンドレットを使用して、ワークフロー ジョブを管理できます。

Workflow Test-Suspend
{
    $a = Get-Date
    Suspend-Workflow
    (Get-Date)- $a
}

Test-Suspend
Id  Name  PSJobTypeName  State      HasMoreData  Location  Command
--  ----  -------------  -----      -----------  --------  -------
8   Job8  PSWorkflowJob  Suspended  True         localhost Test-Suspend

ワークフロー ジョブの再開

ワークフロー ジョブを再開するには、 Resume-Job コマンドレットを使用します。 Resume-Job コマンドレットは、まだ再開されていない可能性がある場合でも、ワークフロー ジョブ オブジェクトを直ちに返します。 ジョブが再開されるのを待つには、 Wait パラメーターを使用するか、 Get-Job コマンドレットを使用して現在のジョブ オブジェクトを取得します。

Resume-Job -Name Job8
Id  Name  PSJobTypeName  State    HasMoreData  Location  Command
--  ----  -------------  -----    -----------  --------  -------
8   Job8  PSWorkflowJob  Running  True         localhost Test-Suspend
Get-Job -Name Job8
Id  Name  PSJobTypeName  State      HasMoreData  Location  Command
--  ----  -------------  -----      -----------  --------  -------
8   Job8  PSWorkflowJob  Completed  True         localhost Test-Suspend

ワークフロー ジョブの出力を取得する

ワークフロー ジョブの出力を取得するには、 Receive-Job コマンドレットを使用します。 出力は、 Suspend-Workflow コマンドレットに続くコマンドでワークフローが再開されたことを示しています。 中断の前に設定された $a 変数の値は、再開時にワークフローで使用できます。

Get-Job -Name Job8 | Receive-Job
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    : localhost

関連項目