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


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-CommandStop-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