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


Remove-Job

Удаляет фоновое задание PowerShell.

Синтаксис

Remove-Job
      [-Id] <Int32[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Job] <Job[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Name] <String[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Filter] <Hashtable>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-InstanceId] <Guid[]>
      [-Force]
      [-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. Удаление заданий с помощью понятного имени

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

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. Удаление задания с помощью его 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-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. Можно ввести массив, разделенный запятыми. 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

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

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

None

Remove-Job не создает никаких выходных данных.

Примечания

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

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