about_Scheduled_Jobs_Advanced
Краткое описание
Дополнительные разделы о запланированных заданиях, включая описание структуры файлов, лежащей в основе запланированных заданий.
Подробное описание
Дополнительные сведения о командлетах, содержащихся в модуле PSScheduledJob , см. в разделе PSScheduledJob.
Каталоги и файлы запланированных заданий
Запланированные задания PowerShell — это задания PowerShell и задачи планировщика задач. Каждое запланированное задание регистрируется в планировщике задач и сохраняется на диске в формате XML сериализации Microsoft платформа .NET Framework.
При создании запланированного задания PowerShell создает каталог для запланированного задания в каталоге $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
на локальном компьютере. Имя каталога совпадает с именем задания.
Ниже приведен пример каталога ScheduledJobs .
Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
\Microsoft\Windows\PowerShell\ScheduledJobs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/29/2011 10:03 AM ArchiveProjects
d---- 9/30/2011 1:18 PM Inventory
d---- 10/20/2011 9:15 AM Backup-Scripts
d---- 11/7/2011 10:40 AM ProcessJob
d---- 11/2/2011 10:25 AM SecureJob
d---- 9/27/2011 1:29 PM Test-HelpFiles
d---- 9/26/2011 4:22 PM DeployPackage
Каждое запланированное задание имеет собственный каталог. Каталог содержит XML-файл запланированного задания и подкаталог вывода .
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/1/2011 3:00 PM Output
-a--- 11/1/2011 3:43 PM 7281 ScheduledJobDefinition.xml
Каталог выходных данных для запланированного задания содержит журнал выполнения. Каждый раз, когда триггер задания запускает запланированное задание, PowerShell создает каталог с именем timestamp в выходном каталоге. Каталог меток времени содержит результаты задания в файле Results.xml и состоянии задания в файле Status.xml.
Следующая команда показывает каталоги журнала выполнения для запланированного задания ProcessJob .
$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft
\Windows\PowerShell\ScheduledJobs\ProcessJob\Output
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/2/2011 3:00 AM 20111102-030002-260
d---- 11/3/2011 3:00 AM 20111103-030002-277
d---- 11/4/2011 3:00 AM 20111104-030002-209
d---- 11/5/2011 3:00 AM 20111105-030002-251
d---- 11/6/2011 3:00 AM 20111106-030002-174
d---- 11/7/2011 12:00 AM 20111107-000001-914
d---- 11/7/2011 3:00 AM 20111107-030002-376
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output\20111102-030002-260
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/2/2011 3:00 AM 581106 Results.xml
-a--- 11/2/2011 3:00 AM 9451 Status.xml
Вы можете открыть и проверить ScheduledJobDefinition.xml, Results.xml и Status.xml файлы или использовать Select-XML
командлет для анализа файлов.
Предупреждение
Не изменяйте XML-файлы. Если любой XML-файл содержит недопустимый XML- файл, PowerShell удаляет запланированное задание и его журнал выполнения, включая результаты задания.
Немедленное запуск запланированного задания
Вы можете сразу запустить запланированное задание одним из двух способов:
- Запустите командлет, чтобы запустить любое запланированное
Start-Job
задание. - Добавьте параметр RunNow в
Register-ScheduledJob
команду, чтобы запустить задание сразу после выполнения команды.
Задания, запущенные с помощью командлета Start-Job
, являются стандартными фоновыми заданиями PowerShell, а не экземплярами запланированного задания. Как и все фоновые задания, эти задания запускаются немедленно, они не подвергаются параметрам задания или влияют на триггеры заданий. Выходные данные задания не сохраняются в каталоге выходных данных запланированного каталога заданий.
Следующая команда использует параметр DefinitionName командлета Start-Job
для запуска запланированного задания ProcessJob.
Start-Job -DefinitionName ProcessJob
Чтобы управлять заданием и получать результаты задания, используйте командлеты заданий. Дополнительные сведения о командлетах заданий см. в about_Jobs.
Примечание.
Чтобы использовать командлеты задания для экземпляров запланированных заданий, модуль PSScheduledJob должен быть импортирован в сеанс. Чтобы импортировать модуль PSScheduledJob , введите Import-Module PSScheduledJob
или используйте любой командлет запланированного задания, например Get-ScheduledJob
.
Переименование запланированного задания
Чтобы переименовать запланированное задание, используйте параметр Name командлета Set-ScheduledJob
. При переименовании запланированного задания PowerShell изменяет имя запланированного задания и каталог запланированных заданий. Однако он не изменяет имена экземпляров запланированного задания, уже запущенного.
Получение времени начала и окончания
Чтобы получить даты и время начала и окончания экземпляров задания, используйте свойства PSBeginTime и PSEndTime объекта ScheduledJob, возвращающего Get-Job
запланированные задания.
В следующем примере используется параметр Property командлета Format-Table
для отображения свойств PSBeginTime и PSEndTime каждого экземпляра задания в таблице. Вычисляемое свойство с именем Label отображает истекшее время каждого экземпляра задания.
Get-job -Name UpdateHelpJob |
Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id PSBeginTime PSEndTime Elapsed Time
-- ----------- --------- ------------
2 11/3/2011 3:00:01 AM 11/3/2011 3:00:39 AM 00:00:38.0053854
3 11/4/2011 3:00:02 AM 11/4/2011 3:01:01 AM 00:00:59.1188475
4 11/5/2011 3:00:02 AM 11/5/2011 3:00:50 AM 00:00:48.3692034
5 11/6/2011 3:00:01 AM 11/6/2011 3:00:54 AM 00:00:52.8013036
6 11/7/2011 3:00:01 AM 11/7/2011 3:00:38 AM 00:00:37.1930350
7 11/8/2011 3:00:01 AM 11/8/2011 3:00:57 AM 00:00:56.2570556
8 11/9/2011 3:00:03 AM 11/9/2011 3:00:55 AM 00:00:51.8142222
9 11/10/2011 3:00:02 AM 11/10/2011 3:00:42 AM 00:00:40.7195954
Управление журналом выполнения
Вы можете определить количество результатов экземпляра задания, сохраненных для каждого запланированного задания, и удалить журнал выполнения и сохраненные результаты задания любого запланированного задания.
Свойство ExecutionHistoryLength запланированного задания определяет, сколько результатов экземпляра задания сохраняется для запланированного задания. Если число сохраненных результатов превышает значение свойства ExecutionHistoryLength , PowerShell удаляет результаты самого старого экземпляра, чтобы освободить место для результатов последнего экземпляра.
По умолчанию PowerShell сохраняет журнал выполнения и результаты 32 экземпляров каждого запланированного задания. Чтобы изменить это значение, используйте параметры MaxResultCount для Register-ScheduledJob
командлетов или Set-ScheduledJob
командлетов.
Чтобы удалить журнал выполнения и все результаты запланированного задания, используйте параметр ClearExecutionHistory командлета Set-ScheduledJob
. Удаление этого журнала выполнения не предотвращает сохранение результатов запланированных заданий в PowerShell.
В следующем примере используется splatting для создания $JobParms
значений параметров, передаваемых командлету Register-ScheduledJob
. Дополнительные сведения см. в разделе about_Splatting.md.
Используется Register-ScheduledJob
@JobParms
для создания запланированного задания. Команда использует параметр MaxResultCount со значением 12, чтобы сохранить только 12 новых результатов экземпляра задания.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
MaxResultCount = "12"
}
Register-ScheduledJob @JobParms
Следующая команда использует параметр MaxResultCount командлета Set-ScheduledJob
для увеличения числа сохраненных результатов экземпляра до 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
Следующая команда удаляет журнал выполнения и текущие сохраненные результаты запланированного задания ProcessJob .
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
Следующая команда получает значения свойств name и ExecutionHistoryLength всех запланированных заданий на компьютере и отображает их в таблице.
Get-ScheduledJob |
Format-Table -Property Name, ExecutionHistoryLength -AutoSize
См. также
PowerShell