Вопрос или проблема
Я пытаюсь создать запланированную задачу с помощью PowerShell, задача должна выполняться 1-го числа каждого месяца, но я не могу разобраться, как использовать New-ScheduledTaskTrigger с ежемесячным интервалом.
Например:
$jobName = "Backup_EMR_Data"
$action = New-ScheduledTaskAction -Execute $actionName -Argument $arg -WorkingDirectory $SSISPackagePath
$trigger = New-ScheduledTaskTrigger -Daily -At 12:30AM
$settings = New-ScheduledTaskSettingsSet
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask $jobName -InputObject $task -TaskPath $taskPath -User $userName -Password $password
Я не могу разобраться, как использовать New-ScheduledTaskTrigger с ежемесячным интервалом.
$triggers = $TaskDefinition.Triggers $trigger = $triggers.Create(1) # Создать триггер "Однократно"
Теперь, если мы хотим запускать задачу более одного раза, например, ежемесячно, нам нужно изменить и добавить немного кода. В коде выше используется Create(1), что означает, что триггер установлен на однократную работу.
$trigger = $triggers.Create(1) # Создать триггер "Однократно"
Если мы хотим использовать другой график, мы должны использовать одно из следующих значений, как подробно объясняется здесь.
TASK_TRIGGER_EVENT 0 TASK_TRIGGER_TIME 1 TASK_TRIGGER_DAILY 2 TASK_TRIGGER_WEEKLY 3 TASK_TRIGGER_MONTHLY 4 TASK_TRIGGER_MONTHLYDOW 5 TASK_TRIGGER_IDLE 6 TASK_TRIGGER_REGISTRATION 7 TASK_TRIGGER_BOOT 8 TASK_TRIGGER_LOGON 9 TASK_TRIGGER_SESSION_STATE_CHANGE 11
Итак, предположим, что мы хотим запускать задачу первый день каждого месяца, тогда нам нужно изменить код следующим образом.
$trigger = $triggers.Create(4) $trigger.DaysOfMonth = 1
Источник PowerShell – Создание запланированных задач с помощью PowerShell версии 3
Ответ или решение
Создание запланированной задачи в PowerShell, которая выполняется ежемесячно, может показаться сложной задачей, особенно если вы не знакомы с параметрами и способами использования New-ScheduledTaskTrigger
. Предоставлю вам детализированное руководство по этой задаче.
Что необходимо сделать
-
Инициализация переменных: убедитесь, что у вас есть все необходимые данные для выполнения задачи, такие как имя задания (
$jobName
), действие ($actionName
), аргументы, рабочий каталог, и аутентификационные данные. -
Создание действия: Используйте
New-ScheduledTaskAction
для указания программы или скрипта, который необходимо запустить. Например:$action = New-ScheduledTaskAction -Execute "C:\Scripts\BackupScript.ps1"
-
Создание триггера с ежемесячным интервалом: Чтобы задать запуск задачи в первый день каждого месяца, используйте параметр
-Monthly
с указанием дня. Это можно сделать с помощью.Trigers.Create(4)
:$triggers = $TaskDefinition.Triggers $trigger = $triggers.Create(4) $trigger.DaysOfMonth = 1 $trigger.StartBoundary = "2023-01-01T00:00:00"
Альтернативный вариант с
New-ScheduledTaskTrigger
может выглядеть как:$trigger = New-ScheduledTaskTrigger -Monthly -DaysOfMonth 1 -At "00:00AM"
-
Настройки задачи: Используйте
New-ScheduledTaskSettingsSet
для указания различных параметров настроек задачи, например, что она может выполняться от имени другого пользователя или поддерживает зону энергосбережения. -
Создание задачи: Объедините действие, триггер и настройки в одну задачу:
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
-
Регистрация задачи: Используйте
Register-ScheduledTask
для регистрации задачи в системе, предоставив ей уникальное имя и необходимые параметры безопасности.Register-ScheduledTask -TaskName $jobName -InputObject $task -User $userName -Password $password
Завершение
Использование PowerShell для автоматизации задач, таких как создание запланированных заданий, может значительно упростить администрирование системы. Этот процесс позволяет задавать точную периодичность и конфигурацию запуска. Убедитесь, что ваша операционная система настроена на поддержку планировщика задач, который используется на всех модернных версиях Windows. Следуйте вышеперечисленным шагам, и ваша задача в первый день каждого месяца будет успешно добавлена в планировщик заданий.