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>]
说明
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 挂起的作业 ID。
ID 是一个整数,用于在当前会话中唯一标识作业。 记住和键入比实例 ID 更容易,但它仅在当前会话中是唯一的。 可以键入一个或多个 ID,用逗号分隔。 若要查找作业的 ID,请使用 Get-Job cmdlet。
参数属性
| 类型: | Int32[] |
| 默认值: | None |
| 支持通配符: | False |
| 不显示: | False |
参数集
SessionIdParameterSet
| Position: | 0 |
| 必需: | True |
| 来自管道的值: | False |
| 来自管道的值(按属性名称): | True |
| 来自剩余参数的值: | False |
-InstanceId
指定此 cmdlet 挂起的作业的实例 ID。 默认值为所有作业。
实例 ID 是一个 GUID,用于在计算机上唯一标识作业。 若要查找作业的实例 ID,请使用 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 仅停止处于指定状态的作业。 此参数的可接受值为:
- NotStarted
- 跑步
- 完成
- 已失败
- 已停止
- 封锁
- 已暂停
- 已断开连接
- 暂停中
- 停止中
有关作业状态的详细信息,请参阅 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 返回挂起的作业。
备注
保存挂起作业的机制和位置可能因作业类型而异。 例如,挂起的工作流作业默认保存在平面文件存储中,但也可以保存在数据库中。
如果提交未处于“正在运行”状态的工作流作业,“挂起作业” 会显示警告消息。 若要禁止显示警告,请使用 WarningAction 具有 SilentlyContinue 值的公共参数。
如果作业的类型不支持暂停,Suspend-Job 返回终止错误。
若要查找挂起的工作流作业(包括此 cmdlet 挂起的作业),请使用 Get-Job cmdlet 的 State 参数来获取处于挂起状态的工作流作业。
某些作业类型具有可阻止 Windows PowerShell 挂起作业的选项或属性。 如果尝试暂停作业失败,请验证作业选项和属性是否允许挂起。