Suspend-Job
暂时停止工作流作业。
语法
Suspend-Job
[-Force]
[-Wait]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Job] <Job[]>
[-Force]
[-Wait]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
Suspend-Job
cmdlet 将挂起工作流作业。 挂起意味着暂时中断或暂停工作流程作业。 此 cmdlet 允许运行工作流的用户挂起该工作流。 它是 https://go.microsoft.com/fwlink/?LinkId=267141 活动的补充,后者是工作流中用于挂起工作流的一个命令。
Suspend-Job
cmdlet 仅适用于工作流作业。 它不适用于标准后台作业,例如使用 Start-Job
cmdlet 启动的作业。
若要标识工作流作业,请查找该作业的 PSJobTypeName 属性中的 PSWorkflowJob 值。 若要确定某个特定的自定义作业类型是否支持 Suspend-Job
cmdlet,请参阅自定义作业类型的帮助主题。
挂起工作流作业时,工作流作业将运行到下一个检查点、挂起,然后立即返回一个工作流作业对象。 若要在获取作业之前等待挂起完成,请使用 Suspend-Job
或 Wait-Job
cmdlet 的 Wait 参数。 挂起工作流作业时,该作业的 State 属性值为 Suspended。
能否正确挂起取决于检查点。 当前作业状态、元数据和输出都保存在检查点中,以便在不丢失状态或数据的情况下恢复工作流作业。 如果工作流作业不具有检查点,则无法将其正确挂起。 若要向运行中的工作流添加检查点,请使用 PSPersist 工作流通用参数。 可使用 Force 参数立即挂起任何工作流作业和不具有检查点的工作流作业,但该操作可能会导致状态和数据丢失。
在自定义作业类型(如工作流作业 (PSWorkflowJob))上使用 Job cmdlet 之前,请使用 Import-Module
cmdlet 或使用模块中的 cmdlet 导入支持该自定义作业类型的模块。
此 cmdlet 是在 Windows PowerShell 3.0 中引入的。
示例
示例 1:按名称挂起工作流作业
此示例显示了如何挂起工作流作业。
第一个命令将创建 Get-SystemLog
工作流。 该工作流使用 CheckPoint-Workflow
活动在工作流中定义检查点。
第二个命令使用通用于所有工作流的 AsJob 参数,以将 Get-SystemLog
工作流作为后台作业运行。 该命令使用 JobName 工作流通用参数来指定工作流作业的友好名称。
第三个命令使用 Get-Job
cmdlet 来获取 LogflowJob
工作流作业。 输出显示,PSJobTypeName 属性的值为 PSWorkflowJob。
第四个命令使用 Suspend-Job
cmdlet 挂起 LogflowJob
作业。 该作业将运行到检查点,然后挂起。
#Sample Workflow
Workflow Get-SystemLog
{
$Events = Get-WinEvent -LogName System
CheckPoint-Workflow
InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}
Get-SystemLog -AsJob -JobName "LogflowJob"
Get-Job -Name LogflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 LogflowJob PSWorkflowJob Running True localhost Get-SystemLog
Suspend-Job -Name LogflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 LogflowJob PSWorkflowJob Suspended True localhost Get-SystemLog
示例 2:挂起和恢复工作流作业
此示例显示了如何挂起和恢复工作流作业。
第一个命令挂起 LogWorkflowJob 作业。该命令立即返回。 输出显示工作流作业仍在运行,即使它正处于挂起状态也是如此。
第二个命令使用 Get-Job
cmdlet 获取 LogWorkflowJob 作业。 该输出显示已成功挂起工作流作业。
第三个命令使用 Get-Job
cmdlet 来获取 LogWorkflowJob 作业,并使用 Resume-Job
cmdlet 来恢复它。 该输出显示已成功恢复工作流作业且它现在正在运行中。
Suspend-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
Get-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Suspended True localhost LogWorkflow
Get-Job -Name LogWorkflowJob | Resume-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
示例 3:挂起远程计算机上的工作流作业
Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}
此命令使用 Invoke-Command
cmdlet 挂起 Srv01 远程计算机上的工作流作业。 Filter 参数的值是一个用于指定 CustomID 值的哈希表。
此 CustomID 是作业元数据 (PSPrivateMetadata)。
示例 4:待工作流作业挂起
Suspend-Job VersionCheck -Wait
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
5 VersionCheck PSWorkflowJob Suspended True localhost LogWorkflow
此命令将挂起 VersionCheck 工作流作业。 该命令使用 Wait 参数等待工作流作业挂起。 当工作流作业运行到下一个检查点并被挂起时,该命令即完成,并返回作业对象。
示例 5:强制工作流作业挂起
Suspend-Job Maintenance -Force
此命令将强制挂起 Maintenance 工作流作业。 维护作业没有检查点。 它无法正确挂起,可能无法正确恢复。
参数
-Confirm
提示你在运行 cmdlet 之前进行确认。
类型: | SwitchParameter |
别名: | cf |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Filter
指定条件的哈希表。 此 cmdlet 会挂起满足所有条件的作业。 输入一个哈希表,其中的键为作业属性,其中的值为作业属性值。
类型: | Hashtable |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Force
立即挂起工作流作业。 此操作可能会导致状态和数据丢失。
默认情况下,Suspend-Job
允许工作流作业运行到下一个检查点,然后将它挂起。
还可以使用此参数挂起不具有检查点的工作流作业。
类型: | SwitchParameter |
别名: | F |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Id
指定此 cmdlet 挂起的作业的 ID。
ID 是一个整数,用于在当前会话中唯一标识作业。 它比实例 ID 更容易记住和键入,但它仅在当前会话中是唯一的。 你可以键入一个或多个 ID(以逗号分隔)。 若要查找某个作业的 ID,请使用 Get-Job
cmdlet。
类型: | Int32[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-InstanceId
指定此 cmdlet 挂起的作业的实例 ID。 默认值为所有作业。
实例 ID 是一个 GUID,用于在计算机上唯一标识作业。 若要查找某个作业的实例 ID,请使用 Get-Job
。
类型: | Guid[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Job
指定此 cmdlet 停止的工作流作业。 请输入包含工作流作业的变量或可获取工作流作业的命令。 还可通过管道将工作流作业传递给 Suspend-Job
cmdlet。
类型: | Job[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Name
指定此 cmdlet 挂起的作业的易记名称。 输入一个或多个工作流作业名称。 支持使用通配符。
类型: | String[] |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-State
指定作业状态。 此 cmdlet 仅停止处于指定状态的作业。 此参数的可接受值为:
- NotStarted
- 正在运行
- 已完成
- 已失败
- 已停止
- 已阻止
- Suspended
- 已断开连接
- 暂停中
- 正在停止
Suspend-Job
仅挂起处于 Running 状态的工作流作业。
有关作业状态的详细信息,请参阅 JobState 枚举。
类型: | JobState |
接受的值: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Wait
指示此 cmdlet 将禁止命令提示符,直到工作流作业处于挂起状态。 默认情况下,即使工作流作业尚未处于挂起状态,Suspend-Job
也会立即返回。
Wait 参数等效于通过管道将 Suspend-Job
命令传递给 Wait-Job
cmdlet。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。
类型: | SwitchParameter |
别名: | wi |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
输入
可以通过管道将所有类型的作业传递给此 cmdlet。 但是,如果 Suspend-Job
获取了一个类型不受支持的作业,则会返回一个终止错误。
输出
此 cmdlet 将返回它挂起的作业。
备注
Windows PowerShell 包含以下 Suspend-Job
别名:
sujb
根据作业类型,保存挂起作业的机制和位置可能有所不同。 例如,挂起的工作流作业默认保存在平面文件存储中,但是也可能保存在数据库中。
如果提交并非 Running 状态的工作流作业,则 Suspend-Job
会显示一条警告消息。 若要禁止显示该警告,请使用值为 SilentlyContinue 的 WarningAction 通用参数。
如果作业是不支持挂起的类型,则 Suspend-Job
会返回一个终止错误。
若要查找挂起的工作流作业(包括那些通过此 cmdlet 挂起的工作流作业),请使用 Get-Job
cmdlet 的 State 参数获取处于 Suspended 状态的工作流。
某些作业类型具有可阻止 Windows PowerShell 挂起作业的选项或属性。 如果挂起作业的尝试失败,则请验证作业选项和属性是否允许挂起。