Удаляет фоновое задание 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 удаляет фоновые задания Windows PowerShell, которые были запущены с использованием командлета Start-Job или параметра AsJob любого командлета.

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

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

Если не удалить фоновое задание, оно останется в глобальном кэше заданий до тех пор, пока не будет закрыт сеанс, в рамках которого было создано задание.

Параметры

-Command <string[]>

Удаляет задания, в команды которых входят заданные слова.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-Force

Удаляет задание, даже если его состояние имеет значение "Running". Без указания параметра Force команда Remove-Job не удалит выполняемое задание.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Id <Int32[]>

Удаляет фоновые задания с указанными идентификаторами.

ID — это целое значение, которое однозначно определяет задание в пределах текущего сеанса. Это значение проще запомнить и ввести, чем идентификатор экземпляра, но оно уникально только в рамках текущего сеанса. Можно ввести один или несколько идентификаторов (разделенных запятыми). Чтобы найти значение идентификатора задания, введите "Get-Job" без параметров.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-InstanceId <Guid[]>

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

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

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

Принимать подстановочные знаки?

false

-Job <Job[]>

Указывает задания, которые требуется удалить. Укажите переменную, содержащую задания, либо введите команду, получающую их. Для передачи заданий командлету Remove-Job можно также использовать оператор конвейера.

Обязательно?

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>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

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

System.Management.Automation.Job

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

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

Нет

Этот командлет не формирует никаких выходных данных.

Пример 1

C:\PS>$batch = get-job -name BatchJob

C:\PS> $batch | remove-job

Описание
-----------
Эти команды удаляют фоновое задание BatchJob из текущего сеанса. Первая команда использует командлет Get-Job для получения объекта, представляющего задание, а затем сохраняет задание в переменной $batch. Вторая команда передает задание в командлет Remove-Job с помощью оператора конвейера (|).

Эта команда эквивалентна использованию параметра Job командлета Remove-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", в том числе выполняемые задания. 

Параметр Name командлета Remove-Job используется для указания шаблона имени задания, а параметр Force — для обеспечения удаления всех заданий, включая задания, которые могут выполняться в данный момент.






Пример 5

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-process} -asJob

C:\PS> $j | remove-job

Описание
-----------
В этом примере показано, как использовать командлет Remove-Job для удаления задания, запущенного на удаленном компьютере с использованием параметра AsJob командлета Invoke-Command.

Первая команда использует командлет Invoke-Command для запуска задания на компьютере Server01. Параметр AsJob используется для запуска команды в виде фонового задания. Полученный объект задания сохраняется в переменной $j.

Поскольку в команде используется параметр AsJob, объект задания создается на локальном компьютере, даже если само задание выполняется на удаленном компьютере. Поэтому для управления заданием можно использовать локальные команды.

Вторая команда удаляет задание с помощью командлета Remove-Job. Для передачи задания, сохраненного в переменной $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. В этом случае объект задания создается на удаленном компьютере, а для управления заданием используются удаленные команды.

Первая команда создает сеанс PSSession (постоянное подключение) для компьютера Server01 с использованием командлета New-PSSession. Постоянное подключение необходимо для удаленного выполнения команды Start-Job. Команда сохраняет сеанс PSSession в переменной $s.

Вторая команда использует командлет Invoke-Command для выполнения команды Start-Job в сеансе PSSession, указанном в переменной $s. Задание запускает команду Get-Process. Параметр Name командлета Start-Job используется для задания понятного имени нового задания.

Третья команда использует командлет Invoke-Command для выполнения команды Remove-Job в сеансе PSSession, указанном в переменной $s. Команда использует параметр Name командлета Remove-Job для указания удаляемого задания.






Пример 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

Описание
-----------
В этом примере показано, как удалить задание, используя его идентификатор экземпляра. 

Первая команда использует командлет Start-Job для запуска фонового задания. Полученный объект задания сохраняется в переменной $j.

Вторая команда передает объект задания, указанный в переменной $j, в команду Format-List с помощью оператора конвейера (|). Команда Format-List использует параметр Property со значением * (все) для отображения всех свойств объекта задания в списке.

Для объекта задания отображаются значения свойств ID и InstanceID, а также других свойств объекта. 

Третья команда использует команду Remove-Job для удаления задания в текущем сеансе. Чтобы создать команду, можно скопировать значение InstanceID из отображения объекта и вставить его. 

Чтобы скопировать значение в консоли Windows PowerShell, выделите его мышью и нажмите клавишу ВВОД. Чтобы вставить значение, щелкните правой кнопкой мыши.






См. также