Поделиться через


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

Описание

Командлет Remove-Job удаляет фоновые задания PowerShell, которые были запущены командлетом Start-Job или командлетами, такими как Invoke-Command поддержка параметра AsJob .

Вы можете удалить Remove-Job все задания или удалить выбранные задания. Задания определяются по имени, идентификатору, идентификатору экземпляра, команде или состоянию. Или объект задания можно отправить по конвейеру Remove-Job. Без параметров или значений параметров не Remove-Job действует.

Так как PowerShell 3.0 Remove-Job может удалять пользовательские типы заданий, такие как запланированные задания и задания рабочего процесса. Например, Remove-Job удаляет запланированное задание, все экземпляры запланированного задания на диске и результаты всех запущенных экземпляров заданий.

Если вы попытаетесь удалить выполняемое задание, Remove-Job завершается ошибкой. Используйте командлет для остановки Stop-Job выполняемого задания. Или используйте Remove-Job параметр Force для удаления выполняемого задания.

Задания остаются в глобальном кэше заданий, пока не удалите фоновое задание или закройте сеанс 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. Удаление заданий NotStarted

В этом примере удаляются все задания из текущего сеанса PowerShell, который не запущен.

Remove-Job -State NotStarted

Remove-Jobиспользует параметр State для указания состояния задания.

Пример 4. Удаление заданий с помощью понятного имени

В этом примере удаляются все задания из текущего сеанса с понятными именами, которые заканчиваются пакетной службой*, включая выполняемые задания.

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создает psSession, постоянное подключение к компьютеру Server01. Подключение сохраняется в переменной $S .

Invoke-Command подключается к сеансу, сохраненном в $S. ScriptBlock используется Start-Job для запуска удаленного задания. Задание выполняет Get-Process команду и использует параметр Name для указания понятного имени задания MyJob.

Invoke-Command$S использует сеанс и выполняетсяRemove-Job. Параметр Name указывает, что задание с именем MyJob удаляется.

Пример 7. Удаление задания с помощью идентификатора экземпляра

В этом примере задание удаляется на основе идентификатора экземпляра.

$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

Удаляет фоновые задания с указанным идентификатором. Можно ввести разделенный запятыми массив. Идентификатор задания — это уникальное целое число, определяющее задание в текущем сеансе.

Чтобы найти идентификатор задания, используйте Get-Job без параметров.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Удаляет задания с указанным экземпляром. Можно ввести разделенный запятыми массив. InstanceId — это уникальный идентификатор GUID, определяющий задание.

Чтобы найти имя экземпляра задания, используйте 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
  • Выполняется
  • Остановлено
  • Остановка
  • Приостановлено
  • Приостановка
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 выполнении. Командлет не выполняется.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

Job

Объект Job можно передать в этот командлет.

Выходные данные

None

Этот командлет не возвращает выходные данные.

Примечания

PowerShell включает следующие псевдонимы для Remove-Job:

  • Все платформы:
    • rjb

Задание PowerShell создает новый процесс. По завершении задания процесс завершается. При Remove-Job запуске состояние задания удаляется.

Если задание останавливается до завершения и его процесс не завершается, процесс принудительно завершается.