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


Фоновые задания

Командлеты могут выполнять свои действия внутри или как Windows PowerShell обратного плана. При выполнении командлета в качестве фонового задания работа выполняется асинхронно в собственном потоке, отдельно от потока конвейера, используемого командлетом. С точки зрения пользователя, когда командлет выполняется в качестве фонового задания, командная строка возвращается немедленно, даже если задание занимает длительное время, и пользователь может продолжать работу без прерывания при выполнении задания.

Фоновые задания, дочерние задания и репозиторий заданий

Объект задания, возвращаемый командлетами, поддерживающими фоновые задания, определяет задание. (Командлет Start-Job также возвращает объект задания.) Имя задания, идентификатор, используемый для указания задания, сведений о состоянии и дочерних заданий, включаются в это определение. Задание не выполняет никакой работы. Каждое фоновое задание имеет по крайней мере одно дочернее задание, так как дочернее задание выполняет фактическую работу. При выполнении командлета, чтобы работа выполнялась в качестве фонового задания, командлет должен добавить задание и дочерние задания в общий репозиторий, который называется репозиторием заданий.

Дополнительные сведения о обработке фоновых заданий в командной строке см. в следующих статьях:

Написание командлета, выполняющегося в качестве фонового задания

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

  • Определите AsJob[switch] параметр, чтобы пользователь смог решить, следует ли запускать командлет в качестве фонового задания.

  • Создайте объект, производный от класса System.Management.Automation.Job. Этот объект может быть пользовательским объектом задания или объектом задания, предоставляемым Windows PowerShell, например объектом System.Management.Automation.PSEventJob.

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

  • Для пользовательских объектов заданий реализуйте класс задания.

  • Возвращает соответствующие объекты в зависимости от того, выполняется ли командлет в качестве фонового задания.

Пример кода см. в разделе Как поддерживать задания.

Следующие API предоставляются Windows PowerShell для управления фоновыми заданиями.

System.Management.Automation.Job Производные пользовательские объекты заданий. Это абстрактный класс.

System.Management.Automation.JobRepository Manages и предоставляет сведения о текущих активных фоновых заданиях.

System.Management.Automation.JobState Определяет состояние фонового задания. К состояниям относятся запуск, запуск и остановка.

System.Management.Automation.JobStateInfo Предоставляет сведения о состоянии фонового задания и, если последнее изменение состояния было вызвано ошибкой, причина, по которой задание ввело текущее состояние.

System.Management.Automation.JobStateEventArgs Предоставляет аргументы для события, которое возникает при изменении состояния фонового задания.

командлеты заданий PowerShell Windows

Следующие командлеты предоставляются Windows PowerShell для управления фоновыми заданиями.

Get-Job

Возвращает Windows фоновые задания PowerShell, выполняемые в текущем сеансе.

Receive-Job

Возвращает результаты фоновых заданий Windows PowerShell в текущем сеансе.

Remove-Job

Удаляет фоновое задание PowerShell Windows.

Start-Job

Запускает фоновое задание PowerShell Windows.

Stop-Job

Останавливает фоновое задание PowerShell Windows.

Wait-Job

Подавляет командную строку до тех пор, пока не будет завершено одно или все фоновые задания PowerShell Windows, выполняемые в сеансе.

См. также

Запись командлета PowerShell Windows