后台作业
cmdlet 可以在内部或作为 Windows PowerShell 后台作业 执行其操作。 当某个 cmdlet 作为后台作业运行时,将以异步方式在独立于该 cmdlet 使用的管道线程的单独线程中完成工作。 从用户的角度来看,当某个 cmdlet 作为后台作业运行时,命令提示符会立即返回,即使该作业需要很长时间才能完成,并且在运行作业时,用户可以继续而不中断。
后台作业、子作业和作业存储库
支持后台作业的 cmdlet 返回的作业对象定义作业。 (启动作业 cmdlet 还会返回一个作业对象。 ) 作业的名称、用于指定作业的标识符、状态信息以及子作业包含在此定义中。 作业不执行任何工作。 每个后台作业至少有一个子作业,因为子作业执行实际工作。 当你运行 cmdlet 以便以后台作业的形式执行工作时,该 cmdlet 必须将作业和子作业添加到公共存储库(称为 作业存储库)。
有关如何在命令行中处理后台作业的详细信息,请参阅以下内容:
编写作为后台作业运行的 Cmdlet
若要编写可作为后台作业运行的 cmdlet,必须完成以下任务:
定义
asJob
开关参数,使用户可以决定是否将该 cmdlet 作为后台作业运行。创建一个派生自 system.object 类的对象。 此对象可以是自定义作业对象,也可以是 Windows PowerShell 提供的作业对象,例如Pseventjob对象。
在记录处理方法中,添加一个
if
语句来检测该 cmdlet 是否应作为后台作业运行。对于自定义作业对象,请实现 job 类。
返回相应的对象,具体取决于 cmdlet 是否作为后台作业运行。
有关代码示例,请参阅 如何支持作业。
后台 Job-Related Api
Windows PowerShell 提供以下 api 来管理后台作业。
System.web 派生自定义作业对象。 这是一个抽象类。
Jobrepository 管理并提供有关当前活动的后台作业的信息。
Jobstate 用于定义后台作业的状态。 状态包括 "已启动"、"正在运行" 和 "已停止"。
Jobstateinfo 提供有关后台作业状态的信息,并且,如果上次状态更改是由错误引起的,则该作业进入其当前状态的原因。
Jobstateeventargs 提供在后台作业更改状态时引发的事件的参数。
Windows PowerShell作业 Cmdlet
Windows PowerShell 提供以下 cmdlet 来管理后台作业。
获取在当前会话中运行的 Windows PowerShell 后台作业。
获取当前会话中的 Windows PowerShell 后台作业的结果。
删除 Windows PowerShell 后台作业。
启动 Windows PowerShell 后台作业。
停止 Windows PowerShell 后台作业。
禁止显示命令提示符,直到在会话中运行的一个或全部 Windows PowerShell 后台作业完成。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈