ZetCode

PowerShell Get-Job

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的Get-Job cmdlet。此cmdlet检索当前会话中运行的后台作业的信息。

作业基础知识

PowerShell作业代表一个独立于当前会话运行的后台任务。作业允许长时间运行的任务执行而不会阻塞控制台。每个作业都有一个唯一的ID、名称、状态和其他属性。Get-Job cmdlet对于作业监控和管理至关重要。

Get-Job基本用法

使用Get-Job的最简单方法是不带任何参数。这将列出当前会话中的所有作业。输出包括作业ID、名称、状态和完成状态。每个作业都表示为一个Job对象。

job1.ps1
Get-Job

此命令检索当前会话中的所有作业。输出显示作业ID、名称及其当前状态(正在运行、已完成、失败)。

按ID获取特定作业

您可以使用作业ID检索有关特定作业的信息。使用-Id参数后跟作业ID。当您需要检查特定后台任务的状态时,这很有用。作业ID在创建作业时按顺序分配。

job2.ps1
Get-Job -Id 1

此命令返回ID为1的作业的信息。由于ID在会话中是唯一的,因此只会返回一个作业。

按名称获取作业

可以使用-Name参数按名称检索作业。当您命名作业时,这很有帮助。支持通配符进行部分匹配。与数字ID相比,名称使作业更容易识别。

job3.ps1
Get-Job -Name "Data*"

此命令返回所有名称以“Data”开头的作业。星号用作模式匹配的通配符。

按状态筛选作业

您可以根据作业的当前状态进行筛选。常见状态包括正在运行、已完成和失败。使用-State参数筛选作业。这有助于识别需要关注或已完成的作业。

job4.ps1
Get-Job -State Running

此命令列出所有当前正在运行的作业。它对于监视会话中的活动后台任务很有用。

格式化作业输出

可以使用Format-List更改默认表格式,以获取详细信息。这将显示作业对象的所有可用属性。您还可以使用Select-Object选择特定属性。

job5.ps1
Get-Job | Format-List *

此命令以列表格式显示所有作业的所有属性。输出包括开始时间、结束时间和子作业等详细信息。

获取作业结果

作业完成后,您可以使用Receive-Job检索其结果。首先使用Get-Job标识已完成的作业。然后将它们通过管道传输到Receive-Job以获取输出。这就是从后台任务收集数据的方式。

job6.ps1
Get-Job -State Completed | Receive-Job

此命令从所有已完成的作业中检索结果。输出显示后台作业在执行期间生成的任何数据。

获取子作业

某些作业会创建子作业,例如使用Start-Job启动的作业。使用-IncludeChildJob参数查看这些。子作业代表父作业中的单个任务。这对于复杂的作业层次结构很有用。

job7.ps1
Get-Job -IncludeChildJob

此命令显示父作业和子作业。子作业在其父作业下缩进显示在输出中。

获取前会话的作业

-IncludeJobCommand参数显示启动每个作业的命令。这有助于识别作业在做什么。与Format-List结合使用,它提供了完整的作业信息,包括原始命令。

job8.ps1
Get-Job -IncludeJobCommand | Format-List

此命令显示所有作业及其全部详细信息,包括创建它们的命令。对审计或文档有用。

来源

PowerShell 文档

在本文中,我们介绍了PowerShell中的Get-Job cmdlet。

作者

我叫Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。我从2007年开始撰写编程文章。迄今为止,我已撰写了1400多篇文章和8本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PowerShell 教程