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


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

См. также