Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 3.0
РАЗДЕЛ
about_Scheduled_Jobs_Basics
КРАТКОЕ ОПИСАНИЕ
Описание процедур создания запланированных заданий и управления ими.
ПОДРОБНОЕ ОПИСАНИЕ
В этом разделе показано, как выполнять основные задачи по созданию запланированных заданий и управлению ими. Информацию о расширенных заданиях см. в разделе about_Scheduled_Jobs_Advanced.
СОЗДАНИЕ ЗАПЛАНИРОВАННОГО ЗАДАНИЯ
Чтобы создать запланированное задание, используйте командлет Register-ScheduledJob. При выполнении этого командлета нужно указать имя задания и выполняемые им команды или сценарий. Задание можно запустить немедленно, добавив параметр RunNow, или создать триггер задания и задать параметры задания при его создании или позднее.
Чтобы создать задание, которое запускает сценарий, используйте параметр FilePath для указания пути к файлу сценария. Чтобы создать задание, которое выполняет команды, используйте параметр ScriptBlock.
Приведенная ниже команда создает задание ProcessJob, которое выполняет команду Get-Process. Это запланированное задание имеет параметры задания по умолчанию и не имеет триггера задания.
PS C:\> Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
СОЗДАНИЕ ТРИГГЕРА ЗАДАНИЯ
Триггеры задания служат для автоматического запуска запланированного задания. Триггер может быть однократным или определять регулярное расписание или событие, например вход пользователя в систему или запуск Windows. Каждое задание может иметь ноль, один или несколько триггеров.
Чтобы создать триггер задания, используйте командлет New-JobTrigger. Приведенная ниже команда создает триггер задания, который запускает задание каждый понедельник и четверг в 5:00. Команда сохраняет триггер задания в переменной $t.
$t = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
Триггеры задания не являются обязательными. Запланированное задание можно запустить в любое время, добавив параметр RunNow в команду Register-ScheduledJob или используя командлеты Start-Job.
ДОБАВЛЕНИЕ ТРИГГЕРА ЗАДАНИЯ
При добавлении триггера в запланированное задание он добавляется в XML-файл этого задания и становится его частью.
Триггер задания можно добавить в запланированное задание при его создании или позднее. Изменить триггер запланированного задания можно в любой момент.
В Windows PowerShell® используются некоторые триггеры заданий, которые также используются в планировщике заданий. Подробнее о триггерах заданий см. в разделе справки по командлету New-JobTrigger. Вставить здесь текст раздела.
Приведенная ниже команда использует командлет Register-ScheduledJob для создания задания процесса. В ней используется параметр Trigger для указания задания триггера в переменной $t.
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Command} -Trigger $t
Кроме того, в существующее запланированное задание можно в любой момент добавить триггер задания. Приведенная ниже команда добавляет триггер задания из переменной $t в запланированное задание ProcessJob.
Add-JobTrigger -Name ProcessJob -Trigger $t
В результате выполнения этой команды триггер задания запускает задание ProcessJob автоматически каждый понедельник и четверг в 5:00.
ПОЛУЧЕНИЕ ТРИГГЕРА ЗАДАНИЯ
Чтобы получить триггер запланированного задания, используйте командлет Get-JobTrigger. Используйте параметры Name, ID и InputObject для указания запланированного задания (но не триггера задания).
Приведенная ниже команда возвращает триггер задания ProcessJob.
PS C:\> Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
СОЗДАНИЕ ПАРАМЕТРОВ ЗАДАНИЯ
Параметры задания определяют условия запуска и выполнения задания. Каждое задание имеет параметры задания по умолчанию, если их не изменить. Так как параметры задания могут привести к тому, что задание не запустится в запланированное время, важно понимать их назначение и использовать осторожно.
В Windows PowerShell используются те же параметры заданий, что и в планировщике заданий. Подробную информацию о параметрах заданий см. в разделе справки по командлету New-ScheduledJobOption. Введите команду «Get-Help New-ScheduledJobOption» или откройте раздел справки в Интернете по адресу https://go.microsoft.com/fwlink/?LinkID=223915.
Параметры задания хранятся в XML-файле запланированного задания. Параметры задания можно задать при создании запланированного задания, а также изменить их в любой момент.
Приведенная ниже команда создает параметр запланированного задания, параметр WakeToRun которого имеет значение True. Параметр WakeToRun запускает запланированное задание, даже если в запланированное время компьютер находится в спящем режиме или в режиме гибернации. Команда сохраняет параметры задания в переменной $o.
$o = New-ScheduledJobOption -WakeToRun
ПОЛУЧЕНИЕ ПАРАМЕТРОВ ЗАДАНИЯ
Чтобы получить параметры запланированного задания, используйте командлет Get-ScheduledJobOption. Используйте параметры Name, ID и InputObject для указания запланированного задания (но не параметров задания).
Приведенная ниже команда возвращает параметры задания ProcessJob. Вставить здесь текст раздела.
PS C:\> Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : False
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
ИЗМЕНЕНИЕ ПАРАМЕТРОВ ЗАДАНИЯ
Параметры запланированного задания можно изменить при его создании или в любое время позднее.
Приведенная ниже команда использует командлет Register-JobTrigger для создания задания процесса. В ней используется параметр ScheduledJobOption для указания параметров задания в переменной $o.
Register-JobTrigger -Name ProcessJob -ScriptBlock {Get-Process} -ScheduledJobOption $o
Кроме того, параметры существующего запланированного задания можно изменить в любой момент. В приведенной ниже команде командлет Set-ScheduledJobOption используется для изменения значения параметра WakeToRun запланированного задания ProcessJob на True.
Как и все командлеты Set в модуле PSScheduledJob, командлет Set-ScheduledJobOption не имеет параметров Name и ID. С помощью параметра InputObject можно указать параметры запланированного задания или передать его по конвейеру из командлета Get-ScheduledJobOption в командлет Set-ScheduledJobOption.
В приведенной ниже команде командлет Get-ScheduledJob используется для получения задания ProcessJob. В ней используется командлет Get-ScheduledJobOption для получения параметров задания ProcessJob и командлет Set-ScheduledJobOption для изменения значения параметра WakeToRun задания ProcessJob на True.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption | Set-ScheduledJobOption -WakeToRun
ПОЛУЧЕНИЕ ЭКЗЕМПЛЯРОВ ЗАПЛАНИРОВАННОГО ЗАДАНИЯ
При запуске запланированного задания Windows PowerShell создает экземпляр задания, который похож на обычное фоновое задание Windows PowerShell. Для управления экземплярами задания используйте командлеты Job, такие как Get-Job, Stop-Job и Receive-Job.
ПРИМЕЧАНИЕ. Для использования командлетов Job применительно к экземплярам запланированных заданий необходимо импортировать модуль PSScheduledJob в сеанс. Чтобы импортировать модуль PSScheduledJob, введите команду «Import-Module PSScheduledJob» (без кавычек) или используйте любой командлет, предназначенный для работы с запланированными заданиями, например Get-ScheduledJob.
Чтобы получить все экземпляры запланированных заданий Windows PowerShell (и все активные стандартные задания), используйте командлет Get-Job. Приведенная ниже команда импортирует модуль PSScheduledJob, а затем возвращает все задания на локальном компьютере.
PS C:\> Import-Module PSScheduledJob
PS C:\> Get-Job
Приведенная ниже команда возвращает все экземпляры задания ProcessJob на локальном компьютере.
PS C:\> Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
По умолчанию время запуска, которое обычно позволяет различать экземпляры одного и того же запланированного задания, не отображается.
В приведенной ниже команде используется командлет Format-Table для вывода свойств Name, ID и BeginTime запланированного задания.
PS C:\> Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name Id BeginTime
---- -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM
ПОЛУЧЕНИЕ РЕЗУЛЬТАТОВ ВЫПОЛНЕНИЯ ЗАПЛАНИРОВАННОГО ЗАДАНИЯ
Чтобы получить результаты выполнения экземпляра запланированного задания, используйте командлет Receive-Job.
ПРИМЕЧАНИЕ. Для использования командлетов Job применительно к экземплярам запланированных заданий необходимо импортировать модуль PSScheduledJob в сеанс. Чтобы импортировать модуль PSScheduledJob, введите команду «Import-Module PSScheduledJob» (без кавычек) или используйте любой командлет, предназначенный для работы с запланированными заданиями, например Get-ScheduledJob.
Приведенная ниже команда получает результаты выполнения последнего экземпляра запланированного задания ProcessJob (ID = 51).
PS C:\> Import-Module PSScheduledJob
PS C:\> Receive-Job -ID 51 -Keep
Результаты выполнения запланированных заданий сохраняются на диске, поэтому параметр Keep командлета Receive-Job необязателен. Однако без параметра Keep результаты выполнения запланированного задания можно получить в каждом сеансе Windows PowerShell только один раз. Чтобы начать новый сеанс Windows PowerShell, введите «PowerShell» или откройте новое окно Windows PowerShell.
СМ. ТАКЖЕ
about_Scheduled_Jobs
about_Scheduled_Jobs_Advanced
about_Scheduled_Jobs_Troubleshooting