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


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

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

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

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

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

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

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

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

  • Создайте объект, производный от класса 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 Предоставляет аргументы для события, которое возникает при изменении состояния фонового задания.

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

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

Получить-задание

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

Примите задание

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

Remove-Job

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

запустить задачу

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

остановки задания

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

ожидание задания

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

См. также

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