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>]

说明

Resume-Job cmdlet 将恢复挂起的工作流作业,例如使用 Suspend-Job cmdlet 或 about_Suspend-Workflow 活动。 工作流作业恢复时,作业引擎会重新构造已保存资源(例如检查点)的状态、元数据和输出。 作业将重启,而不会丢失状态或数据。 作业状态从 挂起 更改为 运行

使用 Resume-Job 的参数按名称、ID、实例 ID 或管道选择作业对象,例如由 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:按 ID 恢复作业

此示例中的命令验证作业是否为挂起的工作流作业,然后恢复作业。 第一个命令使用 Get-Job cmdlet 获取作业。 输出显示作业是挂起的工作流作业。 第二个命令使用 cmdlet 的 Resume-Job 参数恢复作业,ID 值为 4。

PS C:\> Get-Job EventJob
Id     Name            PSJobTypeName   State         HasMoreData     Location   Command
--     ----            -------------   -----         -----------     --------   -------
4      EventJob        PSWorkflowJob   Suspended     True            Server01   \\Script\Share\Event.ps1

PS C:\> Resume-Job -Id 4

示例 2:按名称恢复作业

此命令使用 Name 参数恢复本地计算机上的多个工作流作业。

PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest*

示例 3:使用自定义属性值

此命令使用自定义属性的值来标识要恢复的工作流作业。 它使用 Filter 参数通过其 CustomID 属性标识工作流作业。 它还使用 State 参数来验证工作流作业是否已挂起,然后再尝试恢复该作业。

PS C:\> Resume-Job -Filter @{CustomID="T091291"} -State Suspended

示例 4:恢复远程计算机上的所有挂起作业

此命令将恢复 Srv01 远程计算机上的所有挂起作业。

PS C:\> Invoke-Command -ComputerName Srv01 -ScriptBlock {Get-Job -State Suspended | Resume-Job}

该命令使用 Invoke-Command cmdlet 在 Srv01 计算机上运行命令。 远程命令使用 cmdlet 的 Get-Job 参数获取计算机上所有挂起的作业。 管道运算符(|)将挂起的作业发送到 Resume-Job cmdlet,该 cmdlet 将恢复这些作业。

示例 5:等待作业恢复

此命令使用 Wait 参数指示 Resume-Job 仅在恢复所有指定作业后返回。 Wait 参数在脚本中特别有用,这些脚本假定在脚本继续之前恢复作业。

PS C:\> Resume-Job -Name WorkflowJob, InventoryWorkflow, WFTest* -Wait

示例 6:恢复暂停自身的工作流

此代码示例显示工作流中的 Suspend-Workflow 活动。

Server01 计算机上的 Test-Suspend 工作流。 运行工作流时,工作流将运行 Get-Date 活动,并将结果存储在 $a 变量中。 然后运行 Suspend-Workflow 活动。 作为响应,它采用检查点、挂起工作流并返回工作流作业对象。 即使工作流未显式作为作业运行,Suspend-Workflow 也会返回工作流作业对象。

Resume-Job 在 Job8 中恢复 Test-Suspend 工作流。 它使用 Wait 参数来保存命令提示符,直到作业恢复为止。

Receive-Job cmdlet 获取 Test-Suspend 工作流的结果。 工作流中的最后一个命令返回一个 TimeSpan 对象,该对象表示当前日期和时间与在暂停工作流之前保存在 $a 变量中的已用时间。

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

PS C:\> Test-Suspend -PSComputerName Server01
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Job8            PSWorkflowJob   Suspended     True            Server01             Test-Suspend

PS C:\> Resume-Job -Name "Job8" -Wait
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
8      Job8            PSWorkflowJob   Running       True            Server01             Test-Suspend

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](../PSWorkflow/about/about_Suspend-Workflow.md)。

参数

-Confirm

在运行 cmdlet 之前,提示你进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Filter

指定条件的哈希表。 此 cmdlet 恢复满足哈希表中所有条件的作业。 输入一个哈希表,其中键是作业属性,值是作业属性值。

类型:Hashtable
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-Id

指定此 cmdlet 恢复的作业的 ID 数组。

ID 是一个整数,用于唯一标识当前会话中的作业。 记住和键入比实例 ID 更容易,但它仅在当前会话中是唯一的。 可以键入一个或多个 ID,用逗号分隔。 若要查找作业的 ID,请运行 Get-Job

类型:Int32[]
Position:0
默认值:None
必需:True
接受管道输入:True
接受通配符:False

-InstanceId

指定此 cmdlet 恢复的作业实例 ID 的数组。 默认值为所有作业。

实例 ID 是一个 GUID,用于唯一标识计算机上的作业。 若要查找作业的实例 ID,请运行 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 仅恢复处于 挂起 状态的作业。

有关作业状态的详细信息,请参阅 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 不会生成任何输出。

备注

Windows PowerShell 包含以下 Resume-Job别名:

  • rujb

  • Resume-Job 只能恢复挂起的作业。 如果提交处于不同状态的作业,Resume-Job 对作业运行恢复作,但会生成警告,通知你无法恢复作业。 若要禁止显示警告,请使用 WarningAction 具有 SilentlyContinue 值的公共参数。

  • 如果作业不是支持恢复的类型,例如工作流作业(PSWorkflowJob),Resume-Job 将返回终止错误。

  • 保存挂起作业的机制和位置可能因作业类型而异。 例如,挂起的工作流作业默认保存在平面文件存储中,但也可以保存在 SQL 数据库中。

  • 恢复作业时,作业状态从 挂起 更改为 运行。 若要查找正在运行的作业(包括此 cmdlet 恢复的作业),请使用 cmdlet 的 Get-Job 参数来获取处于“正在运行”状态的 作业。

  • 某些作业类型具有可阻止 Windows PowerShell 挂起作业的选项或属性。 如果尝试暂停作业失败,请验证作业选项和属性是否允许挂起。