Stop-Job
Останавливает фоновое задание PowerShell.
Синтаксис
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Stop-Job
останавливает выполняемые фоновые задания PowerShell. Этот командлет можно использовать для остановки всех заданий или выбранных заданий на основе их имени, идентификатора, идентификатора экземпляра или состояния либо путем передачи объекта задания в Stop-Job
.
Можно использовать для Stop-Job
остановки фоновых заданий, например тех, которые были запущены с помощью командлета Start-Job
или параметра AsJob любого командлета. При остановке фонового задания PowerShell завершает все задачи, ожидающие выполнения в этой очереди заданий, а затем завершает задание. Новые задания не добавляются в очередь после отправки этой команды.
Этот командлет не удаляет фоновые задания. Чтобы удалить задание, используйте Remove-Job
командлет .
Начиная с Windows PowerShell 3.0, Stop-Job
также останавливает пользовательские типы заданий, такие как WorkflowJobs и экземпляры ScheduledJobs. Чтобы разрешить Stop-Job
остановку задания с настраиваемым типом задания, импортируйте модуль, поддерживающий пользовательский тип задания, в сеанс перед выполнением Stop-Job
команды с помощью командлета Import-Module
или с помощью командлета или получения командлета в модуле. Дополнительные сведения о определенных пользовательских типах заданий см. в разделе документации о данной функции.
Примеры
Пример 1. Остановка задания на удаленном компьютере с помощью Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
В этом примере показано, как с помощью командлета Stop-Job
остановить задание, выполняемое на удаленном компьютере.
Так как задание было запущено с помощью командлета Invoke-Command
для удаленного Start-Job
выполнения команды, объект задания хранится на удаленном компьютере. Для удаленного выполнения команды необходимо использовать другую Invoke-Command
Stop-Job
команду. Дополнительные сведения об удаленных фоновых заданиях см. в разделе about_Remote_Jobs.
Первая команда создает сеанс PowerShell (PSSession) на компьютере Server01, а затем сохраняет объект сеанса в переменной $s
. Команда использует учетные данные администратора домена.
Вторая команда использует Invoke-Command
командлет для выполнения Start-Job
команды в сеансе. Команда в задании получает все события в системном журнале событий. Результирующий объект задания хранится в переменной $j
.
Третья команда останавливает задание. Он использует Invoke-Command
командлет для выполнения Stop-Job
команды в PSSession на Сервере Server01. Поскольку объекты задания хранятся в $j
, который является переменной на локальном компьютере, команда использует модификатор Using область для идентификации $j
в качестве локальной переменной. Дополнительные сведения о модификаторе Using область см. в разделе about_Remote_Variables.
После завершения команды задание останавливается, а psSession в $s
становится доступным для использования.
Пример 2. Остановка фонового задания
Stop-Job -Name "Job1"
Эта команда останавливает фоновое Job1
задание.
Пример 3. Остановка нескольких фоновых заданий
Stop-Job -Id 1, 3, 4
Эта команда останавливает три задания. Он идентифицирует их по их идентификаторам.
Пример 4. Остановка всех фоновых заданий
Get-Job | Stop-Job
Эта команда останавливает все фоновые задания в текущем сеансе.
Пример 5. Остановка всех заблокированных фоновых заданий
Stop-Job -State Blocked
Эта команда останавливает все задания, которые заблокированы.
Пример 6. Остановка задания по идентификатору экземпляра
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
Эти команды показывают, как остановить задание на основе его InstanceID.
Первая команда использует командлет для Get-Job
получения заданий в текущем сеансе. Команда использует оператор конвейера (|
) для отправки заданий Format-Table
в команду, которая отображает таблицу указанных свойств каждого задания. Таблица содержит Идентификатор экземпляра каждого задания. Для отображения состояния задания используется вычисляемое свойство.
Вторая команда использует Stop-Job
команду с параметром InstanceID для остановки выбранного задания.
Пример 7. Остановка задания на удаленном компьютере
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...
В этом примере показано, как с помощью командлета Stop-Job
остановить задание, выполняемое на удаленном компьютере.
Так как задание было запущено с параметром AsJob командлета Invoke-Command
, объект Job находится на локальном компьютере, несмотря на то, что задание выполняется на удаленном компьютере. Поэтому для остановки задания можно использовать локальную Stop-Job
команду.
Первая команда использует командлет для Invoke-Command
запуска фонового задания на компьютере Server01. Параметр AsJob применяется для выполнения удаленной команды в качестве фонового задания.
Эта команда возвращает объект задания, который является тем же объектом задания, что и Start-Job
командлет.
Команда сохраняет объект задания в переменной $j
.
Вторая команда использует оператор конвейера для отправки задания в переменной $j
в Stop-Job
. Команда использует параметр PassThru для прямого Stop-Job
возврата объекта задания. Отображение объекта задания подтверждает, что задание находится в состоянии Остановлено.
Дополнительные сведения об удаленных фоновых заданиях см. в разделе about_Remote_Jobs.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Указывает хэш-таблицу условий. Этот командлет останавливает задания, удовлетворяющие всем условиям. Введите хэш-таблицу, где ключи являются свойствами заданий, а значения — значениями этих свойств.
Этот параметр работает только для пользовательских типов заданий, таких как WorkflowJobs и ScheduledJobs. Он не работает со стандартными фоновыми заданиями, такими как созданные с помощью командлета Start-Job
.
Дополнительные сведения о поддержке данного параметра см. в разделе справки о соответствующем типе заданий.
Этот параметр впервые появился в Windows PowerShell 3.0.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Id
Указывает идентификаторы заданий, которые останавливает этот командлет. По умолчанию останавливаются все задания в текущем сеансе.
Идентификатор — это целое число, которое однозначно идентифицирует задание в текущем сеансе. Его легче запомнить и ввести, чем идентификатор экземпляра, но он уникален только в текущем сеансе. Можно ввести один или несколько идентификаторов, разделенных запятыми. Чтобы найти идентификатор задания, введите Get-Job
.
Type: | Int32[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Указывает идентификаторы экземпляров заданий, которые этот командлет останавливает. По умолчанию останавливаются все задания.
Идентификатор экземпляра — это GUID, который однозначно определяет задание на компьютере. Чтобы найти идентификатор экземпляра задания, используйте .Get-Job
Type: | Guid[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Указывает задания, которые этот командлет останавливает. Введите переменную, содержащую задания, либо команду, которая их возвращают. Для отправки заданий командлету можно также использовать оператор конвейера Stop-Job
. По умолчанию удаляет все задания, Stop-Job
запущенные в текущем сеансе.
Type: | Job[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Указывает понятные имена заданий, которые этот командлет останавливает. Введите имена заданий в разделенном запятыми списке или используйте подстановочные знаки (*
), чтобы ввести шаблон имени задания. По умолчанию останавливает все задания, Stop-Job
созданные в текущем сеансе.
Так как понятное имя не является уникальным, используйте параметры WhatIf и Confirm при остановке заданий по имени.
Type: | String[] |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PassThru
Возвращает объект, представляющий элемент, с которым вы работаете. По умолчанию этот командлет не создает выходные данные.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-State
Указывает состояние задания. Этот командлет останавливает только задания в указанном состоянии. Допустимые значения для этого параметра:
NotStarted
Running
Completed
Failed
Stopped
Blocked
Suspended
Disconnected
Suspending
Stopping
Дополнительные сведения о состояниях задания см. в разделе Перечисление JobState.
Type: | JobState |
Accepted values: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | All jobs |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
System.Management.Automation.RemotingJob
Объект задания можно передать в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
System.Management.Automation.PSRemotingJob
При использовании параметра PassThru этот командлет возвращает объект задания.
Примечания
PowerShell включает следующие псевдонимы для Stop-Job
:
- Для всех платформ.
spjb