后台作业
Cmdlet 可以在内部或作为 Windows PowerShell后台作业执行其作。 当 cmdlet 作为后台作业运行时,该工作以与 cmdlet 正在使用的管道线程不同的异步方式在自己的线程中完成。 从用户的角度来看,当 cmdlet 作为后台作业运行时,即使作业需要较长的时间完成,命令提示符也会立即返回,并且用户可以在作业运行时不中断地继续。
后台作业、子作业和作业存储库
支持后台作业的 cmdlet 返回的作业对象定义作业。 (Start-Job cmdlet 也返回作业对象。作业的名称、用于指定作业的标识符、状态信息和子作业包含在此定义中。 该作业不执行任何工作。 每个后台作业至少有一个子作业,因为子作业执行实际工作。 运行 cmdlet 以便将工作作为后台作业执行时,该 cmdlet 必须将作业和子作业添加到公共存储库,称为 作业存储库。
有关如何在命令行处理后台作业的详细信息,请参阅以下内容:
编写作为后台作业运行的 Cmdlet
若要编写可作为后台作业运行的 cmdlet,必须完成以下任务:
定义
asJob
开关参数,以便用户可以决定是否将 cmdlet 作为后台作业运行。创建派生自 System.Management.Automation.Job 类的对象。 此对象可以是自定义作业对象,也可以是 Windows PowerShell 提供的作业对象,例如 System.Management.Automation.PSEventJob 对象。
在记录处理方法中,添加一个
if
语句,用于检测 cmdlet 是否应作为后台作业运行。对于自定义作业对象,实现作业类。
返回相应的对象,具体取决于 cmdlet 是否作为后台作业运行。
有关代码示例,请参阅 如何支持作业。
后台 Job-Related API
Windows PowerShell 提供以下 API 来管理后台作业。
System.Management.Automation.Job 派生自定义作业对象。 这是一个抽象类。
System.Management.Automation.JobRepository 管理和提供有关当前活动后台作业的信息。
System.Management.Automation.JobState 定义后台作业的状态。 状态包括“已启动”、“正在运行”和“已停止”。
System.Management.Automation.JobStateInfo 提供有关后台作业状态的信息;如果上次状态更改是由错误引起的,则作业进入其当前状态的原因。
System.Management.Automation.JobStateEventArgs 提供后台作业更改状态时引发的事件的参数。
Windows PowerShell 作业 Cmdlet
Windows PowerShell 提供以下 cmdlet 来管理后台作业。
获取当前会话中运行的 Windows PowerShell 后台作业。
获取当前会话中 Windows PowerShell 后台作业的结果。
删除 Windows PowerShell 后台作业。
启动 Windows PowerShell 后台作业。
停止 Windows PowerShell 后台作业。
取消命令提示符,直到会话中运行的一个或多个 Windows PowerShell 后台作业完成。