删除 Windows PowerShell 后台作业。

语法

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

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

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

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

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

Remove-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-Confirm] [-WhatIf] [<CommonParameters>]

说明

此 Remove-Job cmdlet 删除通过使用 Start-Job 或任何 cmdlet 的 AsJob 参数而启动的 Windows PowerShell 后台作业。

可以使用此 cmdlet 删除所有作业,或根据作业的名称、ID、实例 ID、命令或状态,或通过将作业对象传递到 Remove-Job 来删除选定的作业。如果没有参数或参数值,则 Remove-Job 无效。

删除正在运行的作业之前,请使用 Stop-Job cmdlet 停止该作业。如果尝试删除正在运行的作业,命令将失败。可以使用 Remove-Job 的 Force 参数来删除正在运行的作业。

如果不删除后台作业,作业将保留在全局作业缓存中,直到您关闭创建该作业的会话。

参数

-Command <string[]>

删除命令中包含指定字词的作业。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Force

即使状态为“Running”也删除作业。当没有 Force 参数时,Remove-Job 将不会删除正在运行的作业。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Id <Int32[]>

删除具有指定 ID 的后台作业。

ID 是一个整数,用于在当前会话中唯一标识作业。它比实例 ID 更便于记忆和键入,但它只在当前会话中是唯一的。可以键入一个或多个 ID(以逗号分隔)。要查找作业的 ID,请键入不带参数的“Get-Job”。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-InstanceId <Guid[]>

删除具有指定实例 ID 的作业。

实例 ID 是一个 GUID,用于在计算机上唯一地标识作业。若要查找作业的实例 ID,请使用 Get-Job 或显示作业对象。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Job <Job[]>

指定要删除的作业。输入包含作业的变量或获取作业的命令。也可以使用管道运算符将作业提交给 Remove-Job cmdlet。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-Name <string[]>

仅删除具有指定友好名称的作业。允许使用通配符。

由于不能保证友好名称是唯一的(即使是在会话中),因此在按名称删除作业时,请使用 WhatIf 和 Confirm 参数。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

true

-State <JobState>

仅删除处于指定状态的作业。有效值是 NotStarted、Running、Completed、Stopped、Failed 和 Blocked。若要删除处于“Running”状态的作业,请使用 Force 参数。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Confirm

在执行命令之前提示您进行确认。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-WhatIf

描述如果执行该命令会发生什么情况(无需实际执行该命令)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.Management.Automation.Job

可将作业对象通过管道传递给 Remove-Job。

输出

None

此 cmdlet 将不产生任何输出。

示例 1

C:\PS>$batch = get-job -name BatchJob

C:\PS> $batch | remove-job

说明
-----------
这些命令将名为 BatchJob 的后台作业从当前会话中删除。第一个命令使用 Get-Job cmdlet 来获取代表作业的对象,然后将该作业保存在 $batch 变量中。第二个命令使用管道运算符 (|) 将作业发送到 Remove-Job cmdlet。

此命令等效于使用 Remove-Job 的 Job 参数,例如“remove-job -job $batch”。






示例 2

C:\PS>get-job | remove-job

说明
-----------
此命令删除当前会话中的所有作业。






示例 3

C:\PS>remove-job -state NotStarted

说明
-----------
此命令将所有尚未启动的作业从当前会话中删除。






示例 4

C:\PS>remove-job -name *batch -force

说明
-----------
此命令将具有以“batch”结尾的友好名称的所有作业从当前会话中删除,包括正在运行的作业。

此命令使用 Remove-Job 的 Name 参数来指定作业名称模式,并使用 Force 参数来确保所有作业都被删除(甚至包括正在进行中的作业)。






示例 5

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-process} -asJob

C:\PS> $j | remove-job

说明
-----------
此示例说明如何使用 Remove-Job cmdlet 来删除通过使用 Invoke-Command cmdlet 的 AsJob 参数在远程计算机上启动的作业。

第一个命令使用 Invoke-Command cmdlet 在 Server01 计算机上运行作业。该命令使用 AsJob 参数将命令作为后台作业运行,并将生成的作业对象保存在 $j 变量中。

由于该命令使用了 AsJob 参数,因此即使作业在远程计算机上运行,作业对象也在本地计算机上创建。因此,可以使用本地命令来管理作业。

第二个命令使用 Remove-Job cmdlet 来删除作业。该命令使用管道运算符 (|) 将 $j 中的作业发送到 Remove-Job。请注意此命令是本地命令。无需使用远程命令来删除通过使用 AsJob 参数启动的作业。






示例 6

C:\PS>$s = new-pssession -computername Server01

C:\PS> invoke-command -session $s -scriptblock {start-job -scriptblock {get-process} -name MyJob}

C:\PS> invoke-command -session $s -scriptblock {remove-job -name MyJob}

说明
-----------
此示例说明如何删除通过使用 Invoke-Command 运行 Start-Job 命令启动的作业。在本例中,作业对象在远程计算机上创建,您使用远程命令来管理作业。

第一个命令使用 New-PSSession cmdlet 来创建与 Server01 计算机的 PSSession(持续性连接)。远程运行 Start-Job 命令时需要持续性连接。此命令将 PSSession 保存在 $s 变量中。

第二个命令使用 Invoke-Command cmdlet 在 $s 中的 PSSession 中运行 Start-Job 命令。作业运行 Get-Process 命令。它使用 Start-Job 的 Name 参数为作业指定一个友好名称。

第三个命令使用 Invoke-Command cmdlet 在 $s 中的 PSSession 中运行 Remove-Job 命令。该命令使用 Remove-Job 的 Name 参数来指定要删除的作业。






示例 7

C:\PS>$j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

C:\PS> $j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process powershell
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : dce2ee73-f8c9-483e-bdd7-a549d8687eed
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

说明
-----------
此示例说明如何根据作业的实例 ID 来删除作业。

第一个命令使用 Start-Job cmdlet 来启动后台作业。此命令将生成的作业对象保存在 $j 变量中。

第二个命令使用管道运算符 (|) 将 $j 中的作业对象发送到 Format-List 命令。Format-List 命令使用值为 *(全部)的 Property 参数在列表中显示作业对象的所有属性。

作业对象显示 ID 和 InstanceID 属性的值,以及对象的其他属性的值。

第三个命令使用 Remove-Job 命令将作业从当前会话中删除。要生成命令,可从显示的对象中复制并粘贴 InstanceID 值。

若要在 Windows PowerShell 控制台中复制某个值,请使用鼠标选中该值,然后按 Enter 复制它。若要粘贴值,请右键单击。






另请参阅




目录