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 挂起的工作流作业。 恢复工作流作业后,作业引擎将从已保存的资源(如检查点)重新构建状态、元数据和输出。 作业将重启,而不会丢失状态或数据。
作业状态将从 Suspended 更改为 Running。
使用 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,请参阅自定义作业类型的帮助主题。
在自定义作业类型上使用 Job cmdlet 之前,请使用 Import-Module
cmdlet 或者获取或使用模块中的 cmdlet 导入支持该自定义作业类型的模块。
此 cmdlet 是在 Windows PowerShell 3.0 中引入的。
示例
示例 1:按 ID 恢复作业
此示例中的命令将验证该作业是否为挂起的工作流作业,然后恢复该作业。 第一个命令使用 Get-Job
cmdlet 来获取该作业。 该输出显示该作业是挂起的工作流作业。 第二个命令使用 Resume-Job
cmdlet 的 Id 参数来恢复 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:使用自定义属性值
此命令使用自定义属性的值来标识要恢复的工作流作业。 它根据 CustomID 属性,使用 Filter 参数标识工作流作业。 它还使用 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 计算机上运行命令。 该远程命令使用 Get-Job
cmdlet 的 State 参数获取计算机上的所有挂起的作业。 管道运算符 (|
) 将挂起的作业发送到 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
- 正在运行
- 已完成
- 已失败
- 已停止
- 已阻止
- Suspended
- 已断开连接
- 暂停中
- 正在停止
此 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 |
输入
可以通过管道将所有类型的作业传递给此 cmdlet。 如果 Resume-Job
获取了一个类型不受支持的作业,则会返回一个终止错误。
输出
None, System.Management.Automation.Job
如果使用 PassThru 参数,此 cmdlet 将返回它尝试恢复的作业。 否则,此 cmdlet 将不生成任何输出。
备注
Windows PowerShell 包含以下 Resume-Job
别名:
rujb
Resume-Job
仅可以恢复已挂起的作业。 如果提交了处于其他状态的作业,则Resume-Job
将在该作业上运行恢复操作,但是会生成一个警告,提示你无法恢复该作业。 若要禁止显示该警告,请使用值为 SilentlyContinue 的 WarningAction 通用参数。如果作业是不支持恢复的类型(例如工作流作业 (PSWorkflowJob)),则
Resume-Job
会引发一个终止错误。根据作业类型,保存挂起作业的机制和位置可能有所不同。 例如,挂起的工作流作业默认保存在平面文件存储中,但是也可能保存在 SQL 数据库中。
恢复作业后,作业状态将从 Suspended 更改为 Running。 若要查找运行中的作业(包括那些通过此 cmdlet 恢复的作业),请使用
Get-Job
cmdlet 的 State 参数获取处于 Running 状态的作业。某些作业类型具有可阻止 Windows PowerShell 挂起作业的选项或属性。 如果挂起作业的尝试失败,则请验证作业选项和属性是否允许挂起。