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


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 также останавливает пользовательские типы заданий, такие как задания рабочих процессов и экземпляры запланированных заданий. Чтобы разрешить 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 System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }

В этом примере показано, как использовать командлет Stop-Job, чтобы остановить задание, которое выполняется на удаленном компьютере.

Так как задание было запущено с помощью командлета Invoke-Command для удаленного выполнения команды Start-Job , объект задания хранится на удаленном компьютере. Для удаленного выполнения команды Stop-Job необходимо использовать другую команду Invoke-Command. Дополнительные сведения об удаленных фоновых заданиях см. в разделе 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

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

Первая команда использует командлет Get-Job для получения заданий в текущем сеансе. Команда использует оператор конвейера (|) для отправки заданий в Format-Table команде, которая отображает таблицу указанных свойств каждого задания. Таблица содержит идентификатор экземпляра каждого задания. Для отображения состояния задания используется вычисляемое свойство.

Вторая команда использует команду Stop-Job с параметром InstanceID для остановки выбранного задания.

Пример 7. Остановка задания на удаленном компьютере

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    get-eventlog system

В этом примере показано, как использовать командлет Stop-Job, чтобы остановить задание, которое выполняется на удаленном компьютере.

Так как задание было запущено с помощью параметра AsJob командлета Invoke-Command , объект задания находится на локальном компьютере, хотя задание выполняется на удаленном компьютере. Поэтому для остановки задания можно использовать локальную команду 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

Указывает хэш-таблицу условий. Этот командлет останавливает задания, удовлетворяющие всем условиям. Введите хэш-таблицу, где ключи являются свойствами заданий, а значения — значениями этих свойств.

Этот параметр работает только с пользовательскими типами заданий, такими как задания рабочих процессов и запланированные задания. Он не работает со стандартными фоновыми заданиями, такими как созданные с помощью командлета 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
  • Запущен
  • Завершено
  • Сбой
  • Остановлена
  • Блокировано
  • Приостановлена
  • Отключено
  • Приостановка
  • Остановка

Дополнительные сведения о состояниях заданий см. в разделе Перечисление JobState в библиотеке MSDN.

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 . В противном случае командлет не формирует никаких выходных данных.