about_Checkpoint-Workflow

简短说明

介绍 Checkpoint-Workflow 活动,该活动用于在工作流中创建检查点。

详细说明

Checkpoint-Workflow 活动会创建检查点,用于在工作流中保存状态和数据。 如果工作流暂停或中断,则可以从最近的检查点恢复,而无需重启。

Checkpoint-Workflow 活动仅在工作流中有效。

SYNTAX

Workflow <Verb-Noun>
{
    Checkpoint-Workflow
}

Checkpoint-Workflow 活动不接受任何参数,包括通用参数和工作流通用参数。

可以将 Checkpoint-Activity 检查点放置在工作流中 CmdletBinding 或 Param 语句之后的任何位置。 但是,在放置检查点时,请考虑收集数据并将其写入到运行工作流的计算机上的磁盘的性能成本。

请确保中断后重新运行工作流某一部分所需的时间大于将检查点状态和数据写入磁盘所需的时间。

请考虑在关键步骤之后创建检查点,这样可以恢复工作流,而无需重启。 例如,在非幂等的命令之后采用检查点。

关于检查点

检查点 是工作流当前状态的快照,其中包括变量的当前值以及在该点生成的任何输出,它会将这些信息保存到磁盘。

如果工作流被有意或无意地中断,Windows PowerShell 工作流将自动使用最新检查点中的数据来恢复该工作流。

以作业形式运行工作流时(比如通过使用 AsJob 工作流通用参数),将一直保留工作流检查点,直到你删除该作业(比如通过使用 Remove-Job cmdlet)。 否则,工作流完成后,将删除工作流检查点。

其他检查点技术

除了 Checkpoint-Workflow 活动之外,Windows PowerShell 工作流还支持其他检查点技术,包括:

  • PSPersist 工作流通用参数
  • PSPersist 活动通用参数
  • PSPersistPreference 变量(在工作流中)

有关向工作流添加检查点的详细信息,请参阅“如何将检查点添加到工作流”。

示例

以下工作流包括完成长时间运行的函数和共享数据的脚本后对 Checkpoint-Workflow 活动的调用。

Workflow Test-Workflow
{
    $a = Invoke-LongRunningFunction
    InlineScript { \\Server\Share\Get-DataPacks.ps1 $Using:a}
    Checkpoint-Workflow

    Invoke-LongRunningFunction
    {
        ...
    }
}

另请参阅