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


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 использует параметр имени для указания задания BatchJob. Объект задания хранится в переменной $batch. Объект в $batch отправляется по конвейеру в Remove-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 использует параметр состояния для указания состояния задания.

Пример 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. Скриптовый блок использует Start-Job для запуска удаленной задачи. Задание выполняет команду Get-Process и использует параметр Name для указания понятного имени задания MyJob.

Invoke-Command использует сеанс $S и запускает Remove-Job. Параметр имя указывает, что задание под названием 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. Параметр свойства использует звездочку (*) для указания того, что все свойства объекта отображаются в списке.

Remove-Job использует параметр InstanceId из экземпляра, чтобы указать задание для удаления.

Параметры

-Command

Удаляет задания, содержащие указанные слова в команде. Можно ввести разделенный запятыми массив.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Confirm

Запрашивает подтверждение перед запуском Remove-Job.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Filter

Удаляет задания, удовлетворяющие всем условиям, установленным в связанной хэш-таблице. Введите хэш-таблицу, где ключи являются свойствами задания, а значения - это значения этих свойств.

Этот параметр работает только в пользовательских типах заданий, таких как задания рабочего процесса и запланированные задания. Он не работает на стандартных фоновых заданиях, таких как созданные с помощью Start-Job.

Этот параметр представлен в PowerShell 3.0.

Тип:Hashtable
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Force

Удаляет задание, даже если состояние задания выполняется. Если параметр не указан, Remove-Job не удаляет выполняемые задания.

Тип:SwitchParameter
Aliases:F
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Id

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

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

Тип:Int32[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-InstanceId

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

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

Тип:Guid[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Job

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

Объекты заданий можно отправлять по конвейеру в Remove-Job.

Тип:Job[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Name

Удаляет только задания с указанным дружественным именем. Разрешены подстановочные знаки. Можно ввести разделенный запятыми массив.

Дружественные имена для заданий не гарантируется, что будут уникальными, даже в сеансе PowerShell. Используйте WhatIf и подтвердить параметры при удалении файлов по имени.

Тип:String[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:True

-State

Удаляет только задания с указанным состоянием. Чтобы удалить задания в состоянии 'запущено', используйте параметр Force.

Принятые значения:

  • AtBreakpoint
  • Блокированный
  • Завершено
  • Отключен
  • Неудача
  • Не начато
  • Бег
  • Остановлено
  • Остановка
  • Подвешенный
  • Приостановка
Тип:JobState
Допустимые значения:AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-WhatIf

Показывает, что произойдет, если Remove-Job будет запущен. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

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

Job

Вы можете передать объект задания в этот командлет.

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

None

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

Примечания

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

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

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

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