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


Suspend-Job

Временно останавливает задания рабочих процессов.

Синтаксис

Suspend-Job
       [-Force]
       [-Wait]
       [-Id] <Int32[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Job] <Job[]>
       [-Force]
       [-Wait]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Filter] <Hashtable>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-State] <JobState>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-InstanceId] <Guid[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Name] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Описание

Командлет приостановки задания приостановки задания приостанавливает задания рабочего процесса. Приостановка означает временное прерывание или приостановку задания рабочего процесса. Этот командлет позволяет пользователям, выполняющим рабочие процессы, приостановить рабочий процесс. Он дополняет действие приостановки рабочего процессаhttps://go.microsoft.com/fwlink/?LinkId=267141, которое является командой в рабочем процессе, который приостанавливает рабочий процесс.

Командлет приостановки задания работает только в заданиях рабочего процесса. Он не работает на стандартных фоновых заданиях, таких как запущенные с помощью командлета Start-Job.

Чтобы определить задание рабочего процесса, найдите значение PSWorkflowJob в свойстве PSJobTypeName задания. Чтобы определить, поддерживает ли определенный настраиваемый тип задания командлет Suspend-Job, см. разделы справки для пользовательского типа задания.

При приостановке задания рабочего процесса задание рабочего процесса выполняется на следующей контрольной точке, приостанавливается и немедленно возвращает объект задания рабочего процесса. Чтобы дождаться завершения приостановки перед получением задания, используйте параметр wait suspend-Job или командлет Wait-Job. При приостановке задания рабочего процесса значение свойства State задания приостановлено.

Приостановка правильно зависит от контрольных точек. Текущее состояние задания, метаданные и выходные данные сохраняются в контрольной точке, чтобы задание рабочего процесса можно было возобновить без потери состояния или данных. Если задание рабочего процесса не имеет контрольных точек, оно не может быть приостановлено правильно. Чтобы добавить контрольные точки в запущенный рабочий процесс, используйте общий параметр PSPersist рабочего процесса. Можно использовать параметр Force, чтобы немедленно приостановить любое задание рабочего процесса и приостановить задание рабочего процесса, которое не имеет контрольных точек, но действие может привести к потере состояния и данных.

Прежде чем использовать командлет задания для пользовательского типа задания, например задание рабочего процесса (PSWorkflowJob), импортируйте модуль, поддерживающий настраиваемый тип задания, либо с помощью командлета Import-Module, либо с помощью командлета в модуле.

Этот командлет появился в Windows PowerShell 3.0.

Примеры

Пример 1. Приостановка задания рабочего процесса по имени

The first command creates the Get-SystemLog workflow. The workflow uses the CheckPoint-Workflow activity to define a checkpoint in the workflow.
#Sample WorkflowWorkflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}

The second command uses the *AsJob* parameter that is common to all workflows to run the Get-SystemLog workflow as a background job. The command uses the *JobName* workflow common parameter to specify a friendly name for the workflow job.
PS C:\> Get-SystemLog -AsJob -JobName "Get-SystemLogJob"

The third command uses the **Get-Job** cmdlet to get the Get-SystemLogJob workflow job. The output shows that the value of the **PSJobTypeName** property is PSWorkflowJob.
PS C:\> Get-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Running     True            localhost   Get-SystemLog

The fourth command uses the **Suspend-Job** cmdlet to suspend the Get-SystemLogJob job. The job runs to the checkpoint and then suspends.
PS C:\> Suspend-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Suspended   True            localhost   Get-SystemLog

В этом примере показано, как приостановить задание рабочего процесса.

Пример 2. Приостановка и возобновление задания рабочего процесса

The first command suspends the LogWorkflowJob job.The command returns immediately. The output shows that the workflow job is still running, even though it is being suspended.
PS C:\> Suspend-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

The second command uses the **Get-Job** cmdlet to get the LogWorkflowJob job. The output shows that the workflow job suspended successfully.
PS C:\> Get-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Suspended     True            localhost            LogWorkflow

The third command uses the **Get-Job** cmdlet to get the LogWorkflowJob job and the Resume-Job cmdlet to resume it. The output shows that the workflow job resumed successfully and is now running.
PS C:\> Get-Job -Name LogWorkflowJob | Resume-Job
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

В этом примере показано, как приостановить и возобновить задание рабочего процесса.

Пример 3. Приостановка задания рабочего процесса на удаленном компьютере

PS C:\> Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}

Эта команда использует командлет Invoke-Command для приостановки задания рабочего процесса на удаленном компьютере Srv01. Значение параметра filter — это хэш-таблица, указывающая значение CustomID. Этот CustomID — метаданные задания (PSPrivateMetadata).

Пример 4. Дождитесь приостановки задания рабочего процесса

PS C:\> Suspend-Job VersionCheck -Wait
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
 5     VersionCheck  PSWorkflowJob      Suspended     True            localhost            LogWorkflow

Эта команда приостанавливает задание рабочего процесса VersionCheck. Команда использует параметр Wait, чтобы дождаться приостановки задания рабочего процесса. Когда задание рабочего процесса выполняется до следующей контрольной точки и приостановлено, команда завершает работу и возвращает объект задания.

Пример 5. Принудительное приостановка задания рабочего процесса

PS C:\> Suspend-Job Maintenance -Force

Эта команда принудительно приостанавливает задание рабочего процесса обслуживания. Задание обслуживания не имеет контрольных точек. Его невозможно приостановить правильно и может не возобновиться правильно.

Параметры

-Confirm

Запрашивает подтверждение перед запуском командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Filter

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

Тип:Hashtable
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Force

Немедленно приостанавливает задание рабочего процесса. Это действие может привести к потере состояния и данных.

По умолчанию приостановка задания позволяет заданию рабочего процесса выполняться до следующей контрольной точки, а затем приостановить ее. Этот параметр также можно использовать для приостановки заданий рабочего процесса, которые не имеют контрольных точек.

Тип:SwitchParameter
Aliases:F
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Id

Указывает идентификаторы заданий, которые этот командлет приостанавливает.

Идентификатор — это целое число, которое однозначно идентифицирует задание в текущем сеансе. Проще помнить и вводить идентификатор экземпляра, но он является уникальным только в текущем сеансе. Можно ввести один или несколько идентификаторов, разделенных запятыми. Чтобы найти идентификатор задания, используйте командлет Get-Job.

Тип:Int32[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-InstanceId

Указывает идентификаторы экземпляров заданий, которые этот командлет приостанавливает. Значение по умолчанию — все задания.

Идентификатор экземпляра — это GUID, который однозначно идентифицирует задание на компьютере. Чтобы найти идентификатор экземпляра задания, используйте get-Job.

Тип:Guid[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Job

Указывает задания рабочего процесса, которые останавливает этот командлет. Введите переменную, содержащую задания рабочего процесса или команду, которая получает задания рабочего процесса. Можно также передать задания рабочего процесса в командлет Suspend-Job.

Тип:Job[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Name

Указывает понятные имена заданий, которые этот командлет приостанавливает. Введите одно или несколько имен заданий рабочего процесса. Поддерживаются подстановочные знаки.

Тип:String[]
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-State

Указывает состояние задания. Этот командлет останавливает только задания в указанном состоянии. Допустимые значения для этого параметра:

  • NotStarted
  • Бег
  • Завершённый
  • Неудавшийся
  • Остановленный
  • Блокированный
  • Подвешенный
  • Бессвязный
  • Приостановка
  • Зубная пломба

Приостановка задания приостанавливает только задания рабочих процессов в состоянии выполнения.

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

Тип:JobState
Допустимые значения:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Wait

Указывает, что этот командлет подавляет командную строку до тех пор, пока задание рабочего процесса не находится в приостановленном состоянии. По умолчанию приостановки задания немедленно возвращается, даже если задание рабочего процесса еще не находится в приостановленном состоянии.

Параметр ожидания эквивалентен отправке команды Suspend-Job командлету Wait-Job.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

Job

Вы можете передать все типы заданий в этот командлет. Однако если приостановке задания получает задание неподдерживаемого типа, возвращается завершающая ошибка.

Выходные данные

Job

Этот командлет возвращает задания, приостановленные.

Примечания

  • Механизм и расположение для сохранения приостановленного задания может отличаться в зависимости от типа задания. Например, приостановленные задания рабочего процесса сохраняются в неструктурированном хранилище файлов по умолчанию, но также могут быть сохранены в базе данных.

  • Если вы отправляете задание рабочего процесса, которое не находится в состоянии "Выполнение", приостанавливать задание отображает предупреждение. Чтобы отключить предупреждение, используйте WarningAction общий параметр со значением SilentlyContinue.

    Если задание не является типом, поддерживающим приостановку, приостановка задания возвращает завершающую ошибку.

  • Чтобы найти приостановленные задания рабочего процесса, включая приостановленные этим командлетом, используйте параметр State командлета Get-Job, чтобы получить задания рабочего процесса в состоянии приостановки.

  • Некоторые типы заданий имеют параметры или свойства, которые не позволяют Windows PowerShell приостановить задание. Если попытка приостановить задание завершается ошибкой, убедитесь, что параметры и свойства задания разрешают приостановку.