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


about_Scheduled_Jobs_Basics

Назначение: 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