删除 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 复制它。若要粘贴值,请右键单击。
另请参阅