Remove-Job

删除 PowerShell 后台作业。

语法

SessionIdParameterSet (默认值)

Remove-Job
    [-Id] <Int32[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Remove-Job
    [-Job] <Job[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Remove-Job
    [-Name] <String[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Remove-Job
    [-InstanceId] <Guid[]>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Remove-Job
    [-Filter] <Hashtable>
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Remove-Job
    [-State] <JobState>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

CommandParameterSet

Remove-Job
    [-Command <String[]>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

该 Remove-Job cmdlet 删除由 Start-Job cmdlet 或 cmdlet(例如 Invoke-Command 支持 AsJob 参数)启动的 PowerShell 后台作业。

可用于 Remove-Job 删除所有作业或删除所选作业。 作业由 其名称、 ID、 InstanceId、 Command 或 State 标识。 或者,可以将作业对象发送到管道 Remove-Job。 如果没有参数或参数值, Remove-Job 则不起作用。

由于 PowerShell 3.0, Remove-Job 因此可以删除自定义作业类型,例如计划作业和工作流作业。 例如, Remove-Job 删除计划作业、磁盘上计划作业的所有实例以及所有触发的作业实例的结果。

如果尝试删除正在运行的作业, Remove-Job 则失败。 使用 Stop-Job cmdlet 停止正在运行的作业。 或者,与 Remove-JobForce 参数一起使用以删除正在运行的作业。

作业保留在全局作业缓存中,直到删除后台作业或关闭 PowerShell 会话。

示例

示例 1:使用作业名称删除作业

此示例使用变量和管道按名称删除作业。

$batch = Get-Job -Name BatchJob
$batch | Remove-Job

Get-Job 使用 Name 参数指定作业 BatchJob。 作业对象存储在 $batch 变量中。 将管道Remove-Job中的$batch对象发送到 。

另一种方法是使用 Job 参数,例如 Remove-Job -Job $batch。

示例 2:删除会话中的所有作业

在此示例中,删除当前 PowerShell 会话中的所有作业。

Get-Job | Remove-Job

Get-Job 获取当前 PowerShell 会话中的所有作业。 作业对象将管道发送到 Remove-Job。

示例 3:删除 NotStarted 作业

此示例从尚未启动的当前 PowerShell 会话中删除所有作业。

Remove-Job -State NotStarted

Remove-Job 使用 State 参数指定作业状态。

示例 4:使用友好名称删除作业

此示例从当前会话中删除所有作业,这些作业的友好名称以 批处理*结尾,包括正在运行的作业。

Remove-Job -Name *batch -Force

Remove-Job 使用 Name 参数指定作业名称模式。 该模式包括星号 (*) 通配符,用于查找以 批处理结尾的所有作业名称。 Force 参数删除正在运行的作业。

示例 5:删除由 Invoke-Command 创建的作业

此示例删除使用 AsJob 参数在远程计算机上Invoke-Command启动的作业。

由于该示例使用 AsJob 参数,因此在本地计算机上创建作业对象。 但是,作业在远程计算机上运行。 因此,使用本地命令来管理作业。

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-Command 在 Server01 计算机上运行作业。 AsJob 参数将 ScriptBlock 作为后台作业运行。 作业对象存储在 $job 变量中。 变量 $job 对象将管道 Remove-Job发送到 。

示例 6:删除由 Invoke-Command 和 Start-Job 创建的作业

此示例演示如何删除通过用于 Invoke-Command 运行的 Start-Job远程计算机上的作业。 作业对象是在远程计算机上创建的,远程命令用于管理作业。 运行远程 Start-Job 命令时,需要持久连接。

$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}

New-PSSession创建与 Server01 计算机的 PSSession(持久连接)。 连接保存在变量中 $S 。

Invoke-Command 连接到保存在中的 $S会话。 ScriptBlock 用于Start-Job启动远程作业。 该作业运行命令 Get-Process ,并使用 Name 参数指定友好作业名称 MyJob。

Invoke-Command 使用 $S 会话并运行 Remove-Job。 Name 参数指定删除名为 MyJob 的作业。

示例 7:使用作业的 InstanceId 删除作业

此示例根据作业 的 InstanceId 删除作业。

$job = Start-Job -ScriptBlock {Get-Process powershell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872
State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-Process powershell
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : ad02b942-8007-4407-87f3-d23e71955872
Id            : 3
Name          : Job3
ChildJobs     : {Job4}
PSBeginTime   : 7/26/2019 11:36:56
PSEndTime     : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-Job 启动后台作业,作业对象保存在变量中 $job 。

将管道Format-List中的$job对象发送到 。 Property 参数使用星号 (*) 指定所有对象的属性都显示在列表中。

Remove-Job 使用 InstanceId 参数指定要删除的作业。

参数

-Command

删除在命令中包含指定单词的作业。 可以输入逗号分隔的数组。

参数属性

类型:

String[]

默认值:None
支持通配符:False
不显示:False

参数集

CommandParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Confirm

在运行之前 Remove-Job 提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:Cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Filter

删除满足关联哈希表中建立的所有条件的作业。 输入一个哈希表,其中键是作业属性,值是作业属性值。

此参数仅适用于自定义作业类型,例如工作流作业和计划作业。 它不适用于标准后台作业,例如使用 . Start-Job.

此参数是在 PowerShell 3.0 中引入的。

参数属性

类型:Hashtable
默认值:None
支持通配符:False
不显示:False

参数集

FilterParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Force

即使作业的状态为 “正在运行”,也会删除作业。 如果未指定 Force 参数, Remove-Job 则不会删除正在运行的作业。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:F

参数集

SessionIdParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
JobParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
InstanceIdParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
NameParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
FilterParameterSet
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Id

删除具有指定 ID 的后台作业。可以输入逗号分隔的数组。 作业 ID 是 标识当前会话中的作业的唯一整数。

若要查找作业的 ID,请使用 Get-Job 不带参数。

参数属性

类型:

Int32[]

默认值:None
支持通配符:False
不显示:False

参数集

SessionIdParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-InstanceId

删除具有指定 InstanceId 的作业。 可以输入逗号分隔的数组。 InstanceId 是标识作业的唯一 GUID。

若要查找作业的 InstanceId,请使用 Get-Job。

参数属性

类型:

Guid[]

默认值:None
支持通配符:False
不显示:False

参数集

InstanceIdParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Job

指定要删除的作业。 输入包含作业的变量或获取作业的命令。 可以输入逗号分隔的数组。

可以将作业对象发送到管道 Remove-Job。

参数属性

类型:

Job[]

默认值:None
支持通配符:False
不显示:False

参数集

JobParameterSet
Position:0
必需:True
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Name

仅删除具有指定友好名称的作业。 允许使用通配符。 可以输入逗号分隔的数组。

作业的友好名称不能保证是唯一的,即使在 PowerShell 会话中也是如此。 按名称删除文件时,请使用 WhatIf 和 Confirm 参数。

参数属性

类型:

String[]

默认值:None
支持通配符:True
不显示:False

参数集

NameParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-State

仅删除具有指定状态的作业。 若要删除状态为 “正在运行”的作业,请使用 Force 参数。

接受的值:

  • AtBreakpoint
  • Blocked
  • 已完成
  • Disconnected
  • Failed
  • 未开始
  • Running
  • 已停止
  • 停止中
  • 已暂停
  • 暂停中

参数属性

类型:JobState
默认值:None
接受的值:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
支持通配符:False
不显示:False

参数集

StateParameterSet
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-WhatIf

显示 Remove-Job 运行时会发生什么情况。 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

可以通过管道将 Job 对象传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

PowerShell 包含以下与 Remove-Job相关的别名:

  • 所有平台:
    • rjb

PowerShell 作业将创建新进程。 作业完成后,进程将退出。 Remove-Job运行时,将删除作业的状态。

如果作业在完成前停止并且其进程尚未退出,则进程将被强行终止。