Remove-Job
删除 PowerShell 后台作业。
语法
Remove-Job
[-Force]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
说明
cmdlet Remove-Job
删除由 Start-Job
cmdlet 或 cmdlet(例如 Invoke-Command
支持 AsJob 参数)启动的 PowerShell 后台作业。
可以使用 Remove-Job
删除所有作业或删除所选作业。 作业由其 名称、 ID、 实例 ID、 命令或 状态标识。 或者,可以将作业对象向下发送到管道 Remove-Job
。 如果没有参数或参数值, Remove-Job
则不起作用。
自 PowerShell 3.0 起, Remove-Job
可以删除自定义作业类型,例如计划作业和工作流作业。 例如, Remove-Job
删除计划作业、磁盘上计划作业的所有实例以及所有触发的作业实例的结果。
如果尝试删除正在运行的作业, Remove-Job
将失败。 Stop-Job
使用 cmdlet 停止正在运行的作业。 或者,将 与 Force 参数一Remove-Job
起使用以删除正在运行的作业。
作业将保留在全局作业缓存中,直到删除后台作业或关闭 PowerShell 会话。
示例
示例 1:使用作业名称删除作业
此示例使用变量和管道按名称删除作业。
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
使用 Name 参数指定作业 BatchJob。 作业对象存储在 变量中 $batch
。 中的 $batch
对象在管道中向下发送到 Remove-Job
。
另一种方法是使用 Job 参数,例如 Remove-Job -Job $batch
。
示例 2:删除会话中的所有作业
在此示例中,将删除当前 PowerShell 会话中的所有作业。
Get-job | Remove-Job
Get-Job
获取当前 PowerShell 会话中的所有作业。 作业对象在管道中向下发送到 Remove-Job
。
示例 3:删除未启动的作业
此示例从当前 PowerShell 会话中删除尚未启动的所有作业。
Remove-Job -State NotStarted
Remove-Job
使用 State 参数指定作业状态。
示例 4:使用友好名称删除作业
此示例从当前会话中删除所有以 batch* 结尾的友好名称的作业,包括正在运行的作业。
Remove-Job -Name *batch -Force
Remove-Job
使用 Name 参数指定作业名称模式。 该模式包括星号 (*
) 通配符来查找以 批处理结尾的所有作业名称。 Force 参数删除正在运行的作业。
示例 5:删除由 Invoke-Command 创建的作业
此示例删除使用 Invoke-Command
AsJob 参数在远程计算机上启动的作业。
由于该示例使用 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
。
中的 $job
对象在管道中向下发送到 Format-List
。 Property 参数使用星号 (*
) 指定对象的所有属性都显示在列表中。
Remove-Job
使用 InstanceId 参数指定要删除的作业。
参数
-Command
删除命令中包含指定的词的作业。 可以输入逗号分隔的数组。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
在运行 之前 Remove-Job
提示你进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
删除满足关联哈希表中建立的所有条件的作业。 输入一个哈希表,其中的键为作业属性,其中的值为作业属性值。
此参数仅适用于自定义作业类型,例如工作流作业和计划作业。 它不适用于标准后台作业,例如使用 Start-Job
创建的作业。
此参数是在 PowerShell 3.0 中引入的。
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
即使作业的状态为“ 正在运行”,也会删除作业。 如果未指定 Force 参数, Remove-Job
则不会删除正在运行的作业。
Type: | SwitchParameter |
Aliases: | F |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
删除具有指定 ID 的后台作业。可以输入逗号分隔的数组。 作业的 ID 是一个唯一整数,用于标识当前会话中的作业。
若要查找作业的 ID,请使用 Get-Job
不带参数。
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
删除具有指定 InstanceId 的作业。 可以输入逗号分隔的数组。 InstanceId 是标识作业的唯一 GUID。
若要查找作业的 InstanceId,请使用 Get-Job
。
Type: | Guid[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
指定要删除的作业。 请输入一个包含作业的变量,或一个可获取作业的命令。 可以输入逗号分隔的数组。
可以将作业对象向下发送到管道 Remove-Job
。
Type: | Job[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
仅删除具有指定友好名称的作业。 允许使用通配符。 可以输入逗号分隔的数组。
作业的友好名称不能保证是唯一的,即使在 PowerShell 会话中也是如此。 按名称删除文件时,请使用 WhatIf 和 Confirm 参数。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-State
仅删除具有指定状态的作业。 若要删除状态为 “正在运行”的作业,请使用 Force 参数。
接受的值:
- AtBreakpoint
- 已阻止
- 已完成
- 已断开连接
- 失败
- NotStarted
- 正在运行
- 已停止
- 正在停止
- Suspended
- 正在暂停
Type: | JobState |
Accepted values: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
显示运行后 Remove-Job
会发生什么情况。 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以将作业对象向下发送到管道 Remove-Job
。
输出
None
Remove-Job
不生成任何输出。
备注
PowerShell 作业将创建新进程。 作业完成后,进程将退出。 运行 时 Remove-Job
,将删除作业的状态。
如果作业在完成之前停止,并且其进程尚未退出,则会强行终止该进程。