Remove-Job
Удаляет фоновое задание 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, выделите его мышью и нажмите клавишу ВВОД. Чтобы вставить значение, щелкните правой кнопкой мыши.
См. также
Концепции
about_Jobs
about_Job_Details
about_Remote_Jobs
Start-Job
Get-Job
Receive-Job
Wait-Job
Stop-Job
Invoke-Command