Как планировать сценарии PowerShell
PowerShell — один из самых популярных языков сценариев в мире, который часто используется для автоматизации задач, которые в противном случае отнимали бы много времени и сил. Созданная на базе среды.NET Common Language Runtime (CLR), вы можете находить и фильтровать всю необходимую информацию и использовать ее для эффективного управления системами.
Как администратор PowerShell, вы, вероятно, запускаете разные сценарии в разное время в течение дня для выполнения всех повторяющихся задач. Во многих случаях это может стать чрезмерным, и всегда есть вероятность пропустить запуск сценария в определенное время, что, в свою очередь, может оказать серьезное влияние на ваши системы.
Чтобы избежать этих проблем, вы можете заранее запланировать сценарии PowerShell, чтобы они выполнялись автоматически в нужное время.
В этой статье мы покажем вам различные способы планирования сценариев PowerShell.
Используйте планировщик задач для планирования сценариев PowerShell.
Использование планировщика задач — один из самых простых способов планирования сценариев PowerShell.
Сделать это:
- Щелкните правой кнопкой мыши кнопку «Пуск» и выберите «Выполнить».
- В диалоговом окне введите «taskschd.msc» и нажмите Enter. Это открывает планировщик заданий. Вы также можете перейти к нему через опцию «Администрирование» на панели управления.
- В окне планировщика заданий найдите библиотеку планировщика заданий на левой панели. Щелкните его правой кнопкой мыши и в меню выберите «Создать задачу».
В окне задачи вы увидите множество вкладок, поэтому давайте подробно пробежимся по каждой из них.
Вкладка Общие
На вкладке «Общие» дайте название задаче и дайте описание, чтобы другим было легче определить ее цель позже.
Посмотрите дальше, и вы увидите некоторые параметры безопасности. Прежде всего, решите, должен ли пользователь войти в систему для запуска этой задачи. Включение этой опции помогает вам отслеживать, кто запустил задачу, и предоставляет журнал доступа пользователей.
Другой параметр безопасности — решить, требуются ли для задачи самые высокие привилегии. Опять же, это часть контроля доступа пользователей.
Вкладка «Триггер»
Вкладка триггера будет пустой, когда вы откроете ее в первый раз.
Нажмите кнопку «Создать» внизу, чтобы создать новый триггер. В новом окне выберите периодичность, дату начала, дату окончания и другие параметры.
Важным параметром является параметр «Начать задачу:». Здесь. выберите, хотите ли вы, чтобы он запускался по расписанию, во время запуска или по любому другому заранее определенному триггеру события. Просто выберите из выпадающего списка.
Есть также несколько других расширенных настроек, таких как задержки, повторы, истечение срока действия и многое другое. Выбирайте варианты в зависимости от ваших потребностей.
Вкладка "Действия"
Вкладка «Действия» также будет пустой, когда вы откроете ее в первый раз. Нажмите кнопку «Новый». Выберите «powershell.exe» для параметра «Программа/скрипт».
У вас также есть другие параметры, и вы можете решить, когда программа должна запускаться, где она должна запускаться и какие необязательные аргументы необходимы. В опции «Добавить аргументы» выберите свой скрипт.
Вкладка «Условия и настройки»
Вкладки «Условия» и «Настройки» содержат множество параметров, связанных с запуском и остановкой задач и обработкой ошибок. Просмотрите эти варианты и выберите те, которые вам нужны.
Нажмите OK, и теперь ваша задача запланирована. Чтобы просмотреть или изменить параметры задачи, откройте диспетчер задач, перейдите к задаче, щелкните правой кнопкой мыши и измените или просмотрите.
Используйте PowerShell
Второй вариант — использовать командлеты PowerShell для планирования этих сценариев.
Это хорошая альтернатива использованию графического интерфейса, особенно если вам удобно использовать PowerShell.
Планирование сценариев PowerShell с помощью командлетов состоит из трех отдельных шагов, которые объясняются ниже.
Установить время
В качестве первого шага определите время начала и частоту выполнения задачи. Например, вы можете запланировать запуск задачи в 9 утра каждый день.
Чтобы установить это, используйте командлет New-ScheduledTaskTrigger . Код для приведенного выше расписания:
$scheduledTime=New-ScheduledTaskTrigger — в 9:00 — ежедневно
Этот командлет имеет много параметров, таких как,
- [-RandomDelay <TimeSpan>]
- -В <DateTime>
- [-Один раз]
- [-RepetitionDuration <TimeSpan>]
- [-RepetitionInterval <TimeSpan>]
- [-CimSession <CimSession[]>]
- [-Дроссельный лимит <Int32>]
- [-AsJob]
- [<Общие параметры>]
Используйте эти параметры, чтобы запланировать задачу именно так, как вы хотите.
Установите действия
New-ScheduledTaskAction — это командлет для настройки действий задачи, и с его помощью вы можете запланировать до 32 задач. Однако задачи будут выполняться одна за другой и параллельного выполнения не будет.
Используйте этот командлет для создания новых задач.
Например,
New-ScheduledTaskAction — выполнить «PowerShell.exe»
Приведенный выше код открывает PowerShell.exe.
$scheduledAction = New-ScheduledTaskAction -Execute «PowerShell.exe» -WorkingDirectory C:/MyScripts
Этот код откроет PowerShell и изменит каталог на MyScripts. Как видите, задачи выполняются последовательно.
Сохраните планировщик
Теперь, когда вы определили задачу и время, когда она должна выполняться, последний шаг — сохранить расписание в вашей локальной системе, чтобы вы могли повторно использовать или редактировать его позже. Используйте командлет Register-ScheduledTask , чтобы сохранить расписание.
Хотя ваша задача может выполнять файлы любого типа, обратите внимание, что этот командлет не проверяет совместимость с вашей операционной системой.
Register-ScheduledTask -TaskName «ExecuteMyScript» -Trigger $scheduledTime -Action $scheduledAction
Эта задача откроет PowerShell и изменит каталог на «MyScripts» каждый день в 9:00.
Таким образом, это еще один способ планирования сценария PowerShell.
Дополнительные действия
Давайте теперь рассмотрим некоторые дополнительные действия, которые вы можете использовать, такие как резервное копирование и удаление.
Резервное копирование
В PowerShell нет встроенного командлета для резервного копирования запланированного задания, но поскольку все обрабатывается как объект, вы всегда можете переместить объект в файл для резервного копирования.
Get-ScheduledTask -TaskName 'ExecuteMyScript' | Экспорт-Clixml c:MyScripts.xml
В приведенном выше примере вы отправляете задачу в файл XML для резервного копирования.
Удалить задачу
Чтобы удалить запланированное задание,
Unregister-ScheduledTask -TaskName 'ExecuteMyScript' -Confirm: $true
Этот командлет удалит вашу задачу после подтверждения. Эта проверка гарантирует, что вы случайно не удалите запланированную задачу.
В заключение отметим, что сценарии PowerShell являются предпочтительным способом реализации автоматизации, поскольку они просты в программировании и поставляются с командлетами, позволяющими делать практически все, что вам нужно.
Вы даже можете указать системе автоматически выполнять сценарии PowerShell в указанное время, используя либо графический интерфейс, например планировщик задач, либо командлеты Powershell, в зависимости от ваших личных предпочтений.
Какой из двух методов вы предпочитаете и почему? Пожалуйста, поделитесь своими мыслями в разделе комментариев.