当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Remove-Job (Microsoft.PowerShell.Core)

作者:精品下载站 日期:2024-12-14 02:14:35 浏览:14 分类:玩电脑

Remove-Job (Microsoft.PowerShell.Core)


Remove-Job

模块 :Microsoft.PowerShell.Core

删除 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>]

描述

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

您可以使用Remove-Job删除所有作业或删除选定的作业。作业由其名称ID实例 ID命令状态标识强>。或者,作业对象可以沿着管道发送到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 变量中。 $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 参数指定作业名称模式。该模式包含星号 (*) 通配符,用于查找以 batch 结尾的所有作业名称。 Force 参数删除正在运行的作业。

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

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

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

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

Invoke-CommandServer01 计算机上运行作业。 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 创建一个 PSSession,即与 Server01 计算机的持久连接。连接保存在 $S 变量中。

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

Invoke-Command 使用 $S 会话并运行 Remove-JobName 参数指定删除名为 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-ListProperty 参数使用星号 (*) 指定对象的所有属性都显示在列表中。

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

参数

-Command

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

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Confirm

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

类型 :

SwitchParameter

别名:

cf

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Filter

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

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

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

类型 :

哈希表

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Force

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

类型 :

SwitchParameter

别名:

F

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

-Id

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

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

类型 :

Int32[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-InstanceId

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

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

类型 :

指导[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Job

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

您可以将作业对象沿着管道发送到Remove-Job

类型 :

工作[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-Name

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

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

类型 :

String[]

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

True

-State

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

接受的值:

  • AtBreakpoint
  • 被阻止
  • 完全的
  • 已断开连接
  • 失败的
  • NotStarted
  • 跑步
  • 已停止
  • 停止
  • 暂停
  • 暂停
类型 :

JobState

接受的值:

AtBreakpoint、阻塞、已完成、已断开连接、失败、未启动、正在运行、已停止、正在停止、已暂停、正在暂停

位置:

0

默认值:

None

必需的:

True

接受管道输入:

True

接受通配符:

False

-WhatIf

显示 Remove-Job 运行时会发生什么。该 cmdlet 未运行。

类型 :

SwitchParameter

别名:

wi

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

False

接受通配符:

False

输入

工作

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

输出

此 cmdlet 不返回任何输出。

笔记

PowerShell 包含以下 Remove-Job 别名:

  • 所有平台:

      rjb

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

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

    您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯