В этой статье вы узнаете, как с помощью PowerShell настроить запланированную задачу, которая будет выполняться автоматически по вашему расписанию.
Прежде чем приступить к созданию запланированной задачи
Создайте PowerShell-скрипт на вашем компьютере. Затем создайте учетную запись службы с минимальными привилегиями для его выполнения. После этого перейдите к созданию запланированной задачи.
Добавление скрипта в папку
Создайте папку с названием Scripts на диске C:. Поместите ваш PowerShell-скрипт в эту папку, по пути C:\Scripts.
Например, в моем случае это скрипт HealthChecker.ps1.
Создание учетной записи службы
Требуется создать учетную запись службы с надежным паролем для выполнения скрипта.
В моем примере была создана учетная запись службы с именем svc-hc.
Добавьте учетную запись пользователя в группу View-Only Organization Management.
Добавление учетной записи службы в локальную группу администраторов
Добавьте учетную запись службы в группу локальных администраторов на каждом сервере, на котором вы хотите запустить сценарий PowerShell, выполнив следующие шаги:
- Откройте оснастку Управление компьютером.
- Перейдите в раздел Группы.
- Дважды щелкните на группу Администраторы.
- Добавьте учетную запись службы svc-hc.
Если учетная запись службы не будет добавлена в группу локальных администраторов, сценарий PowerShell не сможет быть выполнен.
Как создать запланированную задачу с помощью PowerShell
Для создания запланированной задачи с помощью PowerShell мы воспользуемся приведенными ниже командлетами:
New-ScheduledTaskTriggerNew-ScheduledTaskSettingsSetNew-ScheduledTaskActionNew-ScheduledTaskRegister-ScheduledTask
Шаг 1. Создание объекта триггера запланированной задачи
Создайте триггер, который будет определять время для выполнения сценария.
Пример 1. Этот триггер будет запускать задачу ежедневно в 2 часа ночи.
$hcTrigger = New-ScheduledTaskTrigger -Daily -At 2am
Пример 2. Этот триггер будет запускать задачу каждые четыре недели в понедельник в 2:00 ночи.
$hcTrigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Monday -At 2am
Шаг 2. Создание нового объекта настроек задачи по расписанию
Создайте новый объект настроек для запланированной задачи, используя параметры по умолчанию.
$hcSettings = New-ScheduledTaskSettingsSet
Шаг 3. Создание запланированного действия задачи
Создайте действие для запланированной задачи, указав, какие действия должны быть выполнены.
Пример 1. Обновите скрипт HealthChecker, запустите его на локальном сервере и создайте отчет в формате HTML.
$hcAction = New-ScheduledTaskAction -Execute 'powershell.exe' -WorkingDirectory "C:\Scripts\" -Argument '-NonInteractive -NoLogo -NoProfile -Command ".\HealthChecker.ps1 -ScriptUpdateOnly; .\HealthChecker.ps1; .\HealthChecker.ps1 -BuildHtmlServersReport"'
Пример 2. Запустите сценарий HealthChecker на удаленном сервере Exchange EX02-2019.
$hcAction = New-ScheduledTaskAction -Execute 'powershell.exe' -WorkingDirectory "C:\Scripts\" -Argument '-NonInteractive -NoLogo -NoProfile -Command ".\HealthChecker.ps1 -ScriptUpdateOnly; .\HealthChecker.ps1 -Server EX02-2019; .\HealthChecker.ps1 -BuildHtmlServersReport"'
Шаг 4. Создание экземпляра задачи по расписанию
Создайте новый объект задачи по расписанию, используя заранее определенные объекты действия, триггера и настроек.
$hcTask = New-ScheduledTask -Action $hcAction -Trigger $hcTrigger -Settings $hcSettings
Шаг 5. Регистрация задачи на локальном компьютере
Теперь зарегистрируйте созданную задачу по расписанию.
Register-ScheduledTask -TaskName 'HealthChecker Daily Run' -InputObject $hcTask -User (Read-Host "Please enter username in format (Domain\Username)") -Password (Read-Host "Please enter password")
В выводе отобразится имя созданной задачи:
TaskPath TaskName State
-------- -------- -----
\ HealthChecker Daily Run Ready
Запуск запланированного задания в Планировщике заданий
Всегда проверяйте работоспособность запланированной задачи, запуская её вручную.
- Откройте Планировщик заданий.
- Щелкните правой кнопкой мыши по созданной задаче.
- Выберите Выполнить.
По завершении работы сценария результат последнего запуска должен отображаться как Операция завершена успешно. (0x0).
Отчет о проверке скрипта PowerShell
Проверьте, что сценарий PowerShell успешно экспортировал результаты.
Часто задаваемые вопросы
Можно ли запускать PowerShell-скрипт автоматически по расписанию?
Да. Для этого можно создать задачу в Планировщике заданий Windows. В этой статье задача полностью создается и регистрируется с помощью PowerShell.
Как создать ежедневный запуск PowerShell-скрипта?
Используйте командлет New-ScheduledTaskTrigger с параметром -Daily. Например, команда New-ScheduledTaskTrigger -Daily -At 2am создаёт ежедневный запуск в 2:00.
Как запускать задачу раз в несколько недель?
Для этого можно использовать параметры -Weekly и -WeeksInterval. В примере статьи задача запускается каждые четыре недели в понедельник в 2:00.
Для чего используется учетная запись svc-hc?
В рассматриваемом сценарии учетная запись svc-hc используется как служебная учетная запись, от имени которой выполняется запланированная задача HealthChecker.
Можно ли использовать эту инструкцию не только для HealthChecker.ps1?
Да. В статье HealthChecker используется в качестве практического примера. Аналогичным способом можно настроить автоматический запуск других PowerShell-скриптов, изменив действие задачи и необходимые параметры.
Как проверить созданную задачу вручную?
Откройте Планировщик заданий, найдите созданную задачу, щелкните по ней правой кнопкой мыши и выберите Выполнить.
Что означает код 0x0 в Планировщике заданий?
В рассматриваемом примере результат «Операция завершена успешно. (0x0)» означает, что последний запуск запланированной задачи завершился успешно.
Заключение
Теперь вы знаете, как создать задачу по расписанию с помощью PowerShell. Начните с создания учетной записи службы и добавления её в группу View-Only Organization Management. Затем добавьте эту учетную запись в группу локальных администраторов. В конце выполните команды для создания нового запланированного задания. Не забудьте проверить его работоспособность, вручную запустив задачу.
Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как включить корзину Active Directory в Windows Server.