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 |
Входные данные
Объект задания можно отправить по конвейеру в Remove-Job
.
Выходные данные
None
Remove-Job
не создает никаких выходных данных.
Примечания
Задание PowerShell создает новый процесс. После завершения задания процесс завершается. При Remove-Job
запуске состояние задания удаляется.
Если задание останавливается до завершения и его процесс не завершен, процесс принудительно завершается.