Разное

Как запустить скрипт powershell в планировщике задач: Запуск PowerShell скрипта в Планировщике заданий

12.11.1981

Содержание

Запуск PowerShell скрипта в Планировщике заданий

Системному администратору часто приходится писать разные скрипты и настраивать их запуск по расписанию в Планировщике заданий (Task Scheduler). Простой пример ниже.

Написал небольшой скрипт и сохранил по адресу:

B:\scripts\web\url_status.ps1

Я хочу, чтобы этот скрипт запускался каждые 10 минут. Время работы скрипта — не более 60 секунд.

Открываю Планировщик заданий. Создаю попку, в которой будет находиться расписание, называю её IIS.

Нажимаю Create Task.

В первой вкладке General указываю:

  • Name. Любое название расписания.
  • Description. Любое описание, не обязательно.
  • С помощью кнопки Change User or Group можно выбрать пользователя, от имени которого будет выполняться скрипт. Я выбираю локального администратора.
  • Run whether user is logged on or not. Устанавливаю радиокнопку, чтобы скрипт выполнялся независимо от того, залогинен пользователь или нет. В этом случае нас попросят после сохранения расписания указать пароль пользователя.
  • Run with highest privileges. Устанавливаю галку для запуска скрипта с правами администратора.

Перехож на вкладку Triggers. Здесь нужно создать триггер для расписания. New.

В настройках триггера:

  • Begin the task. Выбираю On a schedule. Запуск по расписанию.
  • Daily. Запускать каждый день.
  • Recur every 1 days. Каждый день без пропусков.
  • Repeat task every 10 minutes. Запускать каждые 10 минут for a duration 1 day. Весь день.
  • Stop tasks if it runs longer than 5 minutes. Останавливать задачу, если она выполняется более 5 минут.
  • Enabled. Включить расписание.

OK.

Расписание создано.

Перехожу на вкладку Actions. Здесь нужно указать скрипт для выполнения. New.

  • Actions: Start a program. Выполнить программу.
  • Program/script. Указываю powershell.exe
  • Add arguments (optional). Здесь нужно указать параметры для запуска скрипта. Я пишу: -file «B:\scripts\web\url_status.ps1». Если нужно передать в скрипт аргументы, то можно написать -command «& {B:\scripts\web\url_status.ps1 -a 1 -b 3}».

OK.

Путь к выполняемому скрипту указан.

Перехожу на вкладку Conditions. Здесь определяются условия для запуска. Устанавливаю одну галку, просто на всякий случай:

  • Wake the computer to run this task. Разбудить компьютер для выполнения скрипта.

Перехожу на вкладку Settings. Здесь есть ряд полезных настроек. Ставлю галки:

  • Allow task to be run on demand. Разрешить запуск скрипта по запросу.
  • If the running task does not end when requested, force it to stop. Если задача не завершилась к моменту повторного запуска, то остановить её.
  • Do not start a new instance. Не запускать второй экземпляр.

OK.

Указываю пароль локального администратора. OK.

Теперь скрипт будет запускаться по расписанию. В разделе History можно отслеживать результат выполнения.

Планировщик заданий Windows.

Общие сведения о планировщике заданий Windows.

&nbsp &nbsp В процессе эксплуатации системы часто требуется выполнять периодические регламентные задачи обслуживания в автоматическом режиме без вмешательства человека, например, проверку наличия обновлений, создание резервных копий критически важных файлов, выполнения сценариев администрирования и т.п. Для планирования и автоматического выполнения задач в среде Windows предусмотрено стандартное средство Планировщик заданий. Планировщик заданий обеспечивает выполнение заранее подготовленных задач в определенное время, или при возникновении определенных событий, однократно или с периодичностью, в контексте системных или пользовательских учетных записей. Задачи могут обеспечивать исполнение сценариев командной строки, скриптов WSH, командлетов PowerShell или приложений. В отличие от предыдущих версий Windows, Windows Vista, 7, 8 содержат обширную библиотеку предварительно настроенных заданий. Эти задания выполняют широкий круг операций, обеспечивающих обслуживание системы и поддержание ее в рабочем состоянии. Кроме того, Планировщик заданий в данных операционных системах, стал необходимым для нормальной работы компонентом, который нельзя отключить стандартными средствами.

Выполнение заданий по расписанию обеспечивается службой Планировщика заданий. Эта служба выполняется под локальной системной учетной записью, но позволяет настраивать задания для выполнения в контексте учетных записей определенных пользователей, указав при создании задания имя пользователя и пароль. Задачи можно создавать не только на локальном компьютере, но и на удаленном, по отношению к которому имеются соответствующие права. Процесс создания заданий планировщика упрощается при использовании соответствующего мастера.

В Windows существуют два основных типа планируемых заданий

Стандартные задания. Задания этого типа используются для автоматизации повседневных задач обслуживания компьютерной системы. Пользователь может видеть эти задания и модифицировать их в случае необходимости.

Скрытые задания. Задания этого типа используются для автоматизации выполнения специальных системных задач. Эти задания в стандартном режиме просмотра скрыты от пользователей и их изменение нежелательно.

Каждое задание планировщика имеет определенные свойства:

Триггеры — задают условия начала и завершения выполнения задания. Выполнение задания можно начинать по расписанию, а также по событиям — при входе пользователя в систему, при запуске компьютера, при подключении/отключении терминальной сессии или при записи в журналы системы событий с определенным кодом. Действия — определяют операцию, которую должно выполнять запущенное на выполнение задание, в качестве которого может использоваться приложение или сценарий.

Условия — определяют условия, при которых активированное задание запускается или останавливается. Например, условия можно использовать, чтобы выполнение задания было возможным только в случае наличия определенного сетевого подключения. С помощью условий можно запускать, останавливать и перезапускать задания. .

Параметры — определяют дополнительные параметры, влияющие на выполнение задания – перезапуск после сбоя, выполнение просроченного задания, поведение при наличии уже выполняющегося задания.

Настройки планировщика и параметры заданий хранятся в разделе реестра

HKLM\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion\ Schedule

Результаты работы планировщика заданий могут фиксироваться в журнале, если это определено его настройками (В консоли управления планировщиком заданий —

ДействиеОтключить (Включить) журнал всех заданий).

&nbsp &nbsp Управление заданиями Windows выполняется с помощью специальной оснастки консоли управления Microsoft (mmc.exe), для запуска которой можно воспользоваться главным меню Панель управления — Администрирование — Управление компьютером — Планировщик заданий, или Выполнить(комбинация Win+R) — taskschd.msc.

В левой части основного окна отображаются списки заданий, упорядоченные в соответствии с назначением, в виде структуры папок. В средней части отображается информация о состоянии заданий и их свойствах. В правой части отображается меню действий, допустимых по отношению к заданиям. По умолчанию отображаются задания, относящиеся к локальному компьютеру. Для работы с заданиями удаленных компьютеров щелкните правой кнопкой мыши по элементу верхнего уровня «Планировщик заданий (Локальный)» и выберите пункт меню «Подключиться к другому компьютеру». В открывшемся диалоговом окне установите переключатель «Другой компьютер» и введите имя или IP-адрес требуемого компьютера. Для доступа к управлению заданиями на удаленном компьютере требуются права администратора системы, и, если текущий пользователь таковыми не обладает, то подключение нужно выполнить с использованием другой учетной записи, включив режим «Подключаться как другой пользователь». Естественно, удаленные подключения должны быть разрешены правилами брандмауэра и, кроме того, нужно учитывать, что структура данных заданий планировщика отличается в разных версиях Windows и подключение из среды, например Windows XP не выполнится при подключении к компьютеру с Windows 8.

Для работы с заданием щелкните по нему правой кнопкой мышки в основной панели и в контекстном меню выберите одну из следующих команд:

  • Удалить
  • (Delete) — полностью удалить задание;

  • Отключить
  • (Disable) — временно отключить задание;

  • Свойства
  • (Properties) — просмотреть и/или редактировать свойства задания.

  • Экспортировать
  • (Export) — экспортировать задание в файл, данные из которого можно импортировать на другом компьютере. Операционные системы Windows 8 и Windows Server 2012 имеют такую же архитектуру заданий, как и Windows 7 и Windows Server 2008 R2, но архитектура заданий более ранних версий Windows другая. При экспорте заданий можно указать операционную систему, с которой это задание допустимо использовать, с помощью параметра «Настроить для» (Configure for) на вкладке «Общие» окна свойств задания.

  • Выполнить
  • (Run) — запустить задачу на выполнение;

  • Завершить
  • (End) — если задача выполняется, остановить ее выполнение.

    Задания, созданные пользователями и прикладными программами можно изменять или удалять без каких-либо особых проблем, но большинство заданий, созданных самой операционной системой, трогать не стоит, поскольку это может иметь неприятные последствия. Для отображения системных задач в меню «Вид» необходимо установить флажок «Отобразить скрытые задачи» (Show hidden tasks).

    Просмотр списка заданий, исполняющихся на компьютере в настоящее время.

    Для получения перечня заданий, выполняемых в данный момент времени, можно выбрать верхний уровень структуры «Планировщик заданий» и в контекстном меню, вызываемом правой кнопкой мышки, выбрать пункт «Отображать все выполняемые задачи». Можно также использовать пункт основного меню «Действие» — «Отображать все выполняемые задачи»

    Создание заданий для планировщика.

    Библиотека планировщика заданий, отображаемая в левой части окна оснастки планировщика, имеет довольно непростую иерархическую структуру, поэтому, для освоения приемов работы с запланированными задачами, можно создать отдельную папку, с использованием контекстного меню, вызываемого правой кнопкой мышки и пункта Создать папку, ввести имя папки, и в дальнейшем, именно в ней создавать свои тестовые или рабочие задания.

    В качестве задания планировщика будем использовать задачу, выполняющую командный файл, который определяет с какими привилегиями он выполняется, и выводит на экран сообщение об этом текущему пользователю. Использование такой задачи позволит наглядно продемонстрировать некоторые настройки свойств задания.

    Для проверки уровня привилегий используется стандартная команда whoami в цепочке с командой find, для вывода сообщений — msg. В результате выполнения командного файла, на экран выводится сообщение «Задача выполняется с правами администратора» или » Задача выполняется с правами пользователя — имя «. Пусть данный командный файл имеет имя who-admin.bat. При желании, описание используемых команд и принцип определения привилегий, с которыми выполняется командный файл, можно найти в разделе Список команд CMD Windows

    Содержимое файла с именем who-admin.bat:

    @echo OFF

    WHOAMI /PRIV | find /i «SeRemoteShutdownPrivilege»

    if %ERRORLEVEL% == 0 goto admin

    msg * Задача выполняется с правами пользователя — %USERNAME%

    exit

    :admin

    msg * Задача выполняется с правами администратора.

    Файл можно создать в обычном текстовом редакторе, скопировав приведенный выше текст, выделенный зеленым цветом и присвоив ему имя who-admin.bat . Для правильного отображения кириллицы необходимо использовать DOS-кодировку (CP866, кодовую страницу 866) или изменить текст сообщений для вывода на английском языке. Если текстовый редактор не поддерживает кириллицу в DOS-кодировке, можно воспользоваться сторонними программами ( например — iconv ) или онлайн-сервисами наподобие Универсального декодера-конвертера кириллицы. Можете просто скачать архив who-admin.zip с командным файлом в правильной кодировке.

    Для создания задач планировщика могут использоваться два мастера, вызываемые в режимах Создать простую задачу и Создать задачу. При создании простой задачи используется минимальный набор параметров, не предусматривающий наличие множественных условий выполнения и множественных действий.

    Новую задачу можно создать следующим способом:

    С использованием пункта меню Действие — Создать задачу или через контекстное меню, вызываемое правой кнопкой мышки на уровне «Планировщик заданий». После чего запускается мастер создания задачи:

    На вкладке Общие окна мастера введите имя задания и его описание. Имя, для примера — Test1, а описание «Test Task 1». Описание может быть произвольным текстом, но желательно, чтобы оно отражало суть создаваемой задачи. Остальные настройки можно не выполнять, оставив значения по умолчанию. Эти настройки будем менять перед выполнением созданной задачи, чтобы понять их смысл и назначение.

    По умолчанию задания исполняются, только если пользователь выполнил вход в систему. Чтобы выполнять задачу независимо от того, работает пользователь в системе или нет, используется переключатель Выполнять вне зависимости от регистрации пользователя (Run whether user is logged on or not). Также можно задать выполнение задания с наивысшими полномочиями и/или настроить его для определенных версий Windows.

    На вкладке Триггеры нажмите кнопку Создать, в открывшемся окне Создание триггера и задайте условие при возникновении которого будет выполняться создаваемая задача.

    Для целей обучения, лучше определить триггер таким образом, чтобы задача не выполнялась автоматически, а только вручную, например, выбрав режим однократного запуска на уже прошедшую или будущую дату. Это позволит менять настройки задания и выполнять его в нужный момент времени вручную.

    На вкладке Действия в качестве действия выбираем Запуск программы, в виде которой будет выступать созданный ранее командный файл who-admin.bat, который нужно выбрать с использованием кнопки Обзор….

    На вкладке Условия оставьте настройки по умолчанию. Изменения настроек можно выполнить для определения их влияния на поведение создаваемого задания позже.

    На вкладке Параметры дополнительные параметры для задания также оставим для последующих экспериментов.

    Выполнив все требуемые настройки, нажмите кнопку OK и задание будет создано. Практически любые настройки созданного задания можно изменять при наличии у пользователя соответствующих прав.

    Диагностика состояния заданий планировщика.

    В процессе настройки заданий можно столкнуться с несколькими типами проблем:

    — Задание не запускается;

    — Задание не завершается;

    — Задание завершается с ошибкой;

    Для определения статуса задания, выберите требуемое задание в Планировщике заданий и просмотрите сведения, такие как состояние, время прошлого запуска, результат последнего запуска и т. п. Состояния:

    Отключено (Disabled) означает, что задание существует, но его выполнение запрещено настройками триггера.

    Поставлено в очередь (Queued) означает, что задание ожидает выполнения в запланированное время.

    Готово означает, что задание готово к следующему выполнению.

    Также, отображается время следующего запуска, время прошлого запуска, результат выполнения, автор задания и дата его создания.

    Для длительного контроля за выполнением заданий планировщиком, можно включить режим ведения журнала, в котором будет сохраняться история выполнения заданий.

    Состояние Работает, может в действительности означать, что задание зависло, ожидает ввод пользовательских данных, или, например, из-за ошибок программирования, ушло на бесконечный цикл. Узнать, действительно ли задание зависло, можно, проверив столбец Время прошлого запуска, в котором указано время запуска задания. Если задание выполняется более суток, то, за редким исключением, это не нормально. Чтобы остановить задание, щелкните на нем правой кнопкой мышки и в контекстном меню выберите команду Завершить. Для заданий, время выполнения которых известно, можно установить предельное время выполнения в Свойства-Параметры-Остановить задачу, выполняемую дольше:. В случае превышения отведенного на выполнение времени, задание будет принудительно завершено планировщиком.

    Имея тестовое задание, попробуйте установить скрытый режим его выполнения («Скрытая задача»), выполнить с правами администратора («Выполнить с наивысшими правами»), перенести его на другой компьютер, используя режим экспорта и импорта. Полезно будет поэкспериментировать над условиями и параметрами задания, например, добавив в командный файл команду pause при выполнении в скрытом режиме, и тем самым вызвав имитацию зависания задания. Желательно также отработать вариант выполнения просроченного задания, когда запланированное время соответствует выключенному состоянию компьютера, и включен параметр «Немедленно запускать задачу, если пропущен плановый запуск».

    Перечень некоторых стандартных заданий Windows 7,8:

    Application Experience\AitAgent — Сбор и передача данных дистанционного отслеживания приложений (при явном согласии участвовать в программе улучшения качества программного обеспечения). Даже если время выполнения установлено на 2-3 часа ночи, в настройках присутствует признак выполнения просроченного задания и передача данных в Microsoft выполняется.

    Application Experience\ProgramDataUpdater — Сбор телеметрических данных программы при участии в программе улучшения качества ПО

    Autochk\Proxy — собирает и загружает данные SQM (при участии в программе улучшения качества программного обеспечения).

    Customer Experience Improvement Program\BthSQM — Задача программы улучшения качества Bluetooth собирает статистику по Bluetooth, а также сведения о вашем компьютере, и отправляет их в корпорацию Майкрософт. Полученные сведения используются для повышения надежности, стабильности и общей функциональности Bluetooth в Windows. При отсутствии согласия пользователя на участие в программе улучшения программного обеспечения Windows эта задача не выполняет никаких действий. Задача присутствует в Windows 8.

    Customer Experience Improvement Program\Consolidator При выполнении задачи программы улучшения качества ПО, выполняющейся в режиме ядра (Kernel CEIP), осуществляется сбор дополнительных данных о системе, которые затем передаются в корпорацию Майкрософт. Если пользователь не дал своего согласия на участие в данной программе, то эта задача не выполняет никаких действий.

    Customer Experience Improvement Program\UsbCeip — При выполнении задачи программы улучшения качества ПО шины USB (USB CEIP) осуществляется сбор статистических данных об использовании универсальной последовательной шины USB и сведений о компьютере, которые направляются инженерной группе Майкрософт по вопросам подключения устройств в Windows. Полученные сведения используются для повышения надежности, стабильности и общей производительности шины USB в Windows. При отсутствии согласия пользователя на участие в программе улучшения программного обеспечения Windows задача не выполняет никаких действий.

    RAC\RacTask — Задача средства анализа стабильности системы, предназначенная для обработки данных о надежности компьютера.

    Одним из малоизвестных заданий является Registry\RegIdleBackup — Задание архивации реестра, выполняющееся раз в 10 дней и обеспечивающее сохранение файлов реестра в папке C:\Windows\System32\config\RegBack\. В некоторых случаях, когда нет точек восстановления или они некондиционны, есть шанс восстановить работоспособное состояние системы, загрузившись в другой ОС и скопировав файл(ы) реестра в каталог \Windows\System32\config\. Можно также использовать ручное выполнение данного задания для получения копии файлов реестра, нужных в данный момент времени.

    В Windows 8 присутствует папка \Microsoft\Windows\WS с несколькими задачами использующими обмен данными с магазином Windows.

    Это далеко не полный перечень системных заданий, присутствующих в библиотеке планировщика Windows 7 и Windows 8. Полезность многих из них сомнительна, и даже более того, отрицательная, поскольку может приводить к снижению времени работы ноутбуков от батарей, расходу недешевого мобильного трафика, дополнительных затрат электроэнергии, снижению реальной производительности и т.п. В заключение напомню, что отключение системных заданий требует осторожности и понимания того, что вы делаете, в противном случае, можно получить неработоспособную или частично работоспособную систему.

    В библиотеке планировщика, как правило, присутствуют также задания созданные антивирусами для обновлений программ и баз данных, задания, созданные прочими, не всегда нужными, программами, проверяющими наличие новых версий (продукты Adobe, Google, бесплатное ПО и пр. ) и даже обновляющихся без ведома пользователя.

    Управление заданиями планировщика из командной строки CMD Windows.

    Для управления заданиями из командной строки Windows используется утилита schtasks.exe.Примеры использования:

    schtasks /Query — вывести список всех заданий;

    SCHTASKS /Run /I /TN «System Backup» — выполнить на локальном компьютере задание «System Backup» немедленно, игнорируя любые ограничения.

    SCHTASKS /end /TN «System Backup» — снять задачу «System Backup»

    schtasks /change /tn «\Microsoft\Windows\Application Experience\ProgramDataUpdater» /disable — отключить задание \Microsoft\Windows\Application Experience\ProgramDataUpdater

    В заключение, приведу текст командного файла, позволяющего отключить или включить системные задания планировщика, полезность которых сомнительна. В комментариях, которые предшествуют команде schtasks представлено краткое описание задания, взятое из общих свойств задания, отображаемое в консоли управления. Для выполнения данного командного файла требуется запуск от имени администратора. Действие, выполняемое по отношению к заданиям планировщика определяется значением переменной task_action. Команда set task_action=disable приведет к отключению заданий, set task_action=enable — к включению. При выполнении команды schtasks, ее вывод сохраняется в файле журнала, имя которого соответствует имени командного файла, с расширением txt.

    @echo off

    Rem action — установка значение disable или enable

    set task_action=disable

    REM Проверка наличия прав администратора

    @WHOAMI /PRIV | find /i «SeRemoteShutdownPrivilege» > nul

    if %ERRORLEVEL% == 0 goto admin

    echo Execution aborted. Run this batch file AS Administrator !!!

    pause

    exit

    :admin

    @echo try %task_action% scheduled tasks …

    rem Сбор и передача данных дистанционного отслеживания приложений (при явном согласии участвовать в

    rem программе улучшения качества программного обеспечения).

    schtasks /change /tn «\Microsoft\Windows\Application Experience\AitAgent» /%task_action% >> %~dn0.log

    rem Сбор телеметрических данных программы при участии в программе улучшения качества ПО

    schtasks /change /tn «\Microsoft\Windows\Application Experience\ProgramDataUpdater» /%task_action% >> %~dn0.log

    rem Эта задача собирает и загружает данные SQM при участии в программе улучшения качества

    rem программного обеспечения.

    schtasks /change /tn «\Microsoft\Windows\ Autochk\Proxy» /%task_action% >> %~dn0.log

    rem Если пользователь изъявил желание участвовать в программе по улучшению качества программного

    rem обеспечения Windows, эта задача будет собирать и отправлять сведения о работе программного

    rem обеспечения в Майкрософт.

    schtasks /change /tn «\Microsoft\Windows\Customer Experience Improvement Program\Consolidator» /%task_action% >> %~dn0.log

    rem При выполнении задачи программы улучшения качества ПО, выполняющейся в режиме ядра (Kernel

    rem CEIP), осуществляется сбор дополнительных данных о системе, которые затем передаются в

    rem корпорацию Майкрософт. Если пользователь не дал своего согласия на участие в данной программе,

    rem то эта задача не выполняет никаких действий.

    schtasks /change /tn «\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask» /%task_action% >> %~dn0.log

    rem При выполнении задачи программы улучшения качества ПО шины USB (USB CEIP) осуществляется сбор

    rem статистических данных об использовании универсальной последовательной шины USB и сведений о

    rem компьютере, которые направляются инженерной группе Майкрософт по вопросам подключения устройств

    rem в Windows. Полученные сведения используются для повышения надежности, стабильности и общей

    rem производительности шины USB в Windows. При отсутствии согласия пользователя на участие в

    rem программе улучшения программного обеспечения Windows задача не выполняет никаких действий.

    schtasks /change /tn «\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip» /%task_action% >> %~dn0.log

    rem Эта задача выполняет дефрагментацию жестких дисков компьютера.

    schtasks /change /tn «\Microsoft\Windows\ Defrag\ScheduledDefrag» /%task_action% >> %~dn0.log

    rem Измеряет быстродействие и возможности системы

    schtasks /change /tn «\Microsoft\Windows\ Maintenance\WinSAT» /%task_action% >> %~dn0.log

    REM Запуск приложений, настроенных для Windows HotStart

    schtasks /change /tn «\Microsoft\Windows\ MobilePC\HotStart» /%task_action% >> %~dn0.log

    rem Это задание предназначено для анализа состояния системы и поиска условий, которые могут привести

    rem к повышенному энергопотреблению.

    schtasks /change /tn «\Microsoft\Windows\Power Efficiency Diagnostics\ AnalyzeSystem» /%task_action% >> %~dn0.log

    rem Задача средства анализа стабильности системы, предназначенная для обработки данных о надежности

    rem компьютера.

    schtasks /change /tn «\Microsoft\Windows\ RAC\RacTask» /%task_action% >> %~dn0.log

    REM (Windows Live Social Object Extractor Engine) After installing Windows Live Essentials 2011,

    REM it creates a task called «Extractor Definitions Update Task». The purpose of this task is to

    REM update the definition file for the Windows Live Social Object Extractor Engine. The task

    REM can be found under, Task Scheduler Library\Microsoft\Windows Live\SOXE. —

    REM Read more at http://www.shouldiremoveit.com/ windows-live-soxe-5304-program.aspx

    schtasks /change /tn «\Microsoft\Windows Live\SOXE\Extractor Definitions Update Task» /%task_action% >> %~dn0.log

    rem Эта запланированная задача предназначена для уведомления пользователя о том, что архивация

    rem Windows не настроена.

    schtasks /change /tn «\Microsoft\Windows\ WindowsBackup\ ConfigNotification» /%task_action% >> %~dn0.log

    Учтите, что отключение системных заданий — небезопасная операция, и ее последствия целиком на вашей совести. Так, например, командный файл отключает задание на дефрагментацию файлов, которое не имеет смысла при использовании SSD-диска, но может быть полезным при использовании механических HDD. Кроме того, если вы посмотрите действия, выполняемые заданием дефрагментации, то увидите, что выполняется запуск программы %windir%\system32\defrag.exe –c, где -c — параметр, задающий выполнение дефрагментации на всех дисках. Может быть, имеет смысл создать несколько заданий с разными триггерами для разных дисков, исключив SSD. Можно также изменить параметры существующей задачи, исключив дефрагментацию SSD — дисков:

    defrag /E C: — выполнить дефрагментацию на всех локальных дисках, кроме диска C:

    Хотя, правильнее, если пользователь выполняет дефрагментацию самостоятельно, по мере возникновения необходимости и для тех дисков, которые в ней нуждаются.

    Подробному описанию schtasks отведена отдельная страница в разделе Список команд CMD Windows.

    Запуск командных файлов от имени администратора без запроса UAC — использование планировщика заданий для запуска приложений от имени Администратора без запроса системы контроля учетных записей UAC.

    Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой «Поделиться»

    Планировщик CRON – Помощь | REG.RU

    Cron (Command Run ON) — планировщик задач. Используется для выполнения команд и скриптов на сервере хостинга в определённое время. Планировщик cron доступен после заказа услуги хостинга Linux или Windows.

    Как добавить новую задачу на хостинге Linux

    Управлять заданиями планировщика можно в панели управления веб-хостингом.

    Внимание

    На виртуальном хостинге вы можете запланировать только пользовательские задачи, например, выполнение скрипта сайта. Выполнение системных задач (перезагрузка веб-сервера или сервера баз данных) недоступно.

    1. 1. Войдите в панель управления хостингом.
    2. 2.

      В разделе «Главное» выберите пункт Планировщик и нажмите Создать:

    3. 3.

      Заполните поля:

      • Команда — введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже,
      • Описание — введите описание,
      • Расписание — выберите тип расписания и в оставшихся полях задайте периодичность выполнения задания.

      Нажмите Ok:

    1. 1. Войдите в панель управления хостингом.
    2. 2.

      В разделе «Расширенный» нажмите Запланированные задания:

    3. 3.

      В поле Общие параметры задайте период выполнения задания, а в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже. Нажмите Добавить новое запланированное задание:

    1. 1. Войдите в панель управления хостингом.
    2. 2.

      Перейдите в раздел «Сайты и домены». Нажмите Планировщик задач:

    3. 3.

      Нажмите Добавить задачу:

    4. 4.

      Выберите Тип задачи:

      • Если вы выбрали Выполнить команду, в поле Команда введите команду для запуска, которая должна выполняться. Примеры команд приведены в разделе ниже;

      • Если вы выбрали Получить URL-адрес, в поле URL-адрес укажите URL-адрес, где находится скрипт. При этом команду писать не нужно;

      • Если вы выбрали Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту относительно папки виртуального сервера, а в поле Аргументы укажите аргументы скрипта, если они есть. В поле Использовать версию PHP выберите версию PHP.

      Заполните остальные поля, они одинаковы для всех типов задач:

      • Запустить — выберите в раскрывающемся списке периодичность выполнения задания и назначьте время исполнения,

      • Описание — введите описание,

      • Уведомлять — выберите тип уведомлений.

      Нажмите OK:

      Готово, вы добавили новую задачу в планировщике cron.

    Примеры команд для cron-заданий

    Запуск задания через GET

    Команда для запуска:

    GET http://domain.ru/script.php

    Где http://domain.ru/script.php — URL-адрес, при обращении к которому будет выполняться сron-задание.

    Запуск задания через WGET

    Альтернативный вариант команды для запуска:

    wget -q -O - http://domain.ru/script.php > /dev/null 2>&1

    Где http://domain.ru/script.php — URL-адрес, при обращении к которому будет выполняться cron-задание.

    Запуск задания через CLI

    При запуске задания через GET или WGET, PHP-скрипт запускается тем интерпретатором PHP, версия которого активирована в панели управления хостингом. Если вам необходимо выполнить скрипт под другой версией PHP, запустите cron-задание через CLI.

    Команды для запуска:

    /opt/php/7.4/bin/php -f /var/www/u1234567/data/www/domain.ru/script.php
    /opt/php/7.4/bin/php -f /var/www/u1234567/public_html/domain.ru/script.php
    /opt/php/7.4/bin/php -f var/www/vhosts/u1234567.plsk.regruhosting.ru/httpdocs/domain.ru/script.php

    Где:

    7.4 — версия PHP: Как узнать версию PHP на хостинге,

    u1234567 — ваш логин хостинга: Как узнать пароль хостинга,

    domain.ru — имя вашего домена,

    script.php — имя файла с cron-заданием.

    Обратите внимание: скрипты можно запускать через php (/opt/php/7.4/bin/php) и через php-cgi (/opt/php/7.4/bin/php-cgi). О том, какой режим подойдёт для работы скриптов, вы можете узнать у разработчиков вашего сайта.

    Запуск задания через CLI с учётом параметров php.ini

    Добавьте к командам ключ «-c» и пропишите полный путь до файла php.ini.

    Команды для запуска:

    Есть два варианта пути к файлу php.ini, который зависит от того, включена ли опция php.ini для домена. Определите путь по инструкции в статье Где находятся настройки версий PHP в ISPmanager.

    Если вы храните настройки PHP отдельно для каждого домена по пути /var/www/php-bin/имя-домена/php.ini, то команда выглядит так:

    /opt/php/7.4/bin/php -c /var/www/u1234567/data/php-bin/domain.ru/php.ini -f /var/www/u1234567/data/www/domain.ru/script.php

    Если вы используете общую версию PHP и храните настройки для всех доменов по пути /var/www/php-bin-php(номер-версии)/php.ini, то команда выглядит так:

    /opt/php/7.4/bin/php -c */var/www/u1234567/data/php-bin-php(номер-версии)/php.ini* -f /var/www/u1234567/data/www/domain.ru/script.php
    /opt/php/7.4/bin/php -c /var/www/u1234567/php-bin/php.ini -f /var/www/u1234567/public_html/domain.ru/script.php
    /opt/php/7.4/bin/php -c /var/www/vhosts/u1234567.plsk.regruhosting.ru/php-bin/php.ini  -f var/www/vhosts/u1234567.plsk.regruhosting.ru/httpdocs/domain.ru/script.php

    Где:

    7.4 — версия PHP: Как узнать версию PHP на хостинге,

    u1234567 — ваш логин хостинга: Как узнать пароль хостинга,

    domain.ru — имя вашего домена,

    script.php — имя файла с cron-заданием.

    Как добавить новую задачу на хостинге Windows

    Воспользуйтесь инструкцией для Plesk по инструкции выше.

    Если в 4 пункте инструкции вы выбрали тип задачи Выполнить PHP-скрипт, в поле Путь к скрипту укажите путь к скрипту, а в поле Аргументы укажите аргументы скрипта в зависимости от модуля:

    На PHP

    На ASP/ASP.NET

    Путь к скрипту:

    C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP74\php.exe

    Где PleskPHP74 — версия PHP: Как узнать версию PHP на хостинге.

    Аргументы:

    c:\inetpub\vhosts\u1234567.plsk.regruhosting.ru\httpdocs\domain.ru\script.php

    Где:

    u1234567 — ваш логин хостинга: Как узнать логин хостинга,

    domain.ru — имя вашего домена,

    script.php — имя файла с cron-заданием.

    Путь к скрипту:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Аргументы:

    Arguments: -c "(new-object system.net.webclient).downloadstring('[http://domain.ru/script.aspx](http://mysite.ru/script.aspx)')"

    Где http://domain.ru/script.php — URL-адрес, при обращении к которому будет выполняться CRON-задание.

    Готово, вы добавили новую задачу в планировщике cron.

    Внимание

    Если вы выполнили все шаги инструкции, но не получили желаемого результата, это может быть связано с локальными настройками. Напишите заявку в службу поддержки, наши специалисты оперативно вам помогут!

    Была ли эта статья полезной?

    Да Нет

    Пользователи, считающие этот материал полезным: 0 из 0

    Как выполнить запланированное задание только один раз в Windows 10

    Обновление: Перестаньте получать сообщения об ошибках и замедляйте работу своей системы с помощью нашего инструмента оптимизации. Получите это сейчас на эту ссылку

    Планировщик заданий является одним из наиболее удобных предопределенных приложений Windows, поскольку он может упростить вашу работу.

    Основная идея этого приложения — запускать различные сценарии и программы в определенное время или событие.

    Он имеет библиотеку, в которой все загруженные задачи индексируются и организуются в соответствии со временем и важностью.

    Основная система этого приложения состоит из 2 элементов: триггеры и действия.

    Скрипт для отключения задачи

    Чтобы отключить задачу, мы будем использовать скрипт PowerShell. Его легко создать, но вы, должно быть, уже создали задачу, которую хотите отключить, потому что вам нужно ее имя в скрипте.

    Откройте новый файл блокнота и вставьте следующее. Заменить «Название задачи» с названием задачи, которую вы хотите отключить. Сохраните его с расширением файла PS1.

    Disable-ScheduledTask -TaskName "Имя задачи"

    Отключить запланированное задание

    Теперь вы должны запустить этот скрипт, чтобы отключить задание. Лучше всего добавить это как действие к той же задаче, которую вы хотите отключить, чтобы другая задача не выполнялась специально для отключения первой задачи. Однако, независимо от того, выполняете ли вы сценарий как действие для той же задачи или создаете новую задачу для ее выполнения, это остается на ваше усмотрение, и то, что лучше всего подходит для вашего конкретного использования.

    После того, как вы создали задачу и добавили все соответствующие действия, добавьте еще одно действие. Установите действие «Запустить программу». В поле Программа / сценарий введите Powershell.exe. В поле «Добавить аргументы» введите следующее, но замените «Путь к сценарию PowerShell» на полный путь к ранее созданному сценарию.

    Обновление за октябрь 2021 г .:

    Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows — нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:

    • Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
    • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
    • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.

    Синтаксис

    -ExecutionPolicy Bypass "Путь к сценарию powershell"

    Пример

    -PecutionPolicy Обход "C: \ Users \ fatiw \ Desktop \ endTask.ps1"

    Убедитесь, что Задача запускается с правами администратора. Вы можете предоставить доступ администратора на вкладке Общие. Включите параметр «Запускать с высшими привилегиями». Когда вы нажмете ОК, чтобы завершить сценарий, вам может быть предложено ввести пароль администратора. И последнее, что следует помнить, это то, что действие, запускающее сценарий и отключающее задачу, должно быть самым последним в списке действий. Вы можете запустить запланированную задачу вручную, чтобы проверить, в правильном ли порядке выполняются действия.

    Заключение

    Планировщик заданий — удобный инструмент Windows, который позволяет планировать и выполнять автоматизированные задачи. Например, вы можете использовать планировщик задач, чтобы Windows запускала программу в определенное время, один раз, периодически или только при возникновении определенного события.

    https://superuser.com/questions/1420150/run-a-scheduled-task-only-once-based-on-an-event

    РЕКОМЕНДУЕМЫЕ: Нажмите здесь, чтобы устранить ошибки Windows и оптимизировать производительность системы

    CCNA, веб-разработчик, ПК для устранения неполадок

    Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

    Запуск PowerShell скриптов по расписанию. Написание и запуск скриптов в PowerShell

    Всем привет сегодня хочу рассказать как запустить скрипт PowerShell в Windows. Представьте ситуацию вы написали скрипт который сильно упрощает вам вывод информации по Active Directory , вы открываете оснастку powershell прописываете путь к своему скрипту нажимаете enter и получаете ошибку.

    Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

    Смотрим как ее решить.

    PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:

    Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.

    Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.

    Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.

    Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

    По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает лишь как интерактивная оболочка. Он не допускает работу скриптов, и загружает лишь те файлы конфигурации, которые подписаны издателем, которому вы доверяете.

    Разрешить выполнение скриптов powershell

    Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание!!! для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.

    На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт.

    Программа PowerShell — это альтернативная командная строка с обширной функциональностью. Многие владельцы компьютеров, которые неплохо ориентируются в системных процессах, интересуются возможностями её использования на Windows 10 и предыдущих версиях этого обеспечения, чтобы менять конкретные процессы и настройки ПК под себя.

    В использовании программы PowerShell нет ничего сложного. Просто следуйте всем инструкциям из этой статьи и у вас все получится

    Если вы не являетесь знатоком в подобной тематике, только начинаете изучение командных строк и действий, доступных к выполнению в них, вам будет полезно узнать ответы на главные вопросы по пользованию таким приложением. Например, как запустить Windows PowerShell ISE Windows 10 и писать, работать со скриптами.

    Как открыть PowerShell?

    Это можно сделать несколькими следующими способами:

    • — вы найдёте приложение в общем списке компонентов под буквой W.
    • При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
    • Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
    • В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
    • В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.

    Как писать и запускать скрипты?

    Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на.ps1 — именно такое расширение имеют файлы этой системной утилиты.

    Писать скрипты в самом приложении можно так:

    • Запустите его.
    • Нажмите на пункт «Создать».
    • Или кликните на «Файл», и в появившемся списке выберите «Создать».
    • Напишите все команды, которые нужно выполнить, сохраните файл.

    Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.

    Запустить скрипт вы сможете таким образом:

    1. Зайдите в PowerShell от имени администратора.
    2. При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
    3. В этом случае e: — имя жёсткого диска, где находится файл.
    4. Жмите Enter.

    Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.

    Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.

    Другие вопросы по пользованию

    У многих возникает вопрос, как узнать версию PowerShell? Для этого выполните следующее:

    1. Введите $PSVersionTable.
    2. Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
    3. В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.

    Запуск PowerShell скриптов по расписанию

    В задачи практически любого системного администратора входит написание различных скриптов и их запуск. Запланировать запуск скрипта по расписанию с помощью Task Sheduler — задача несложная, но при использовании PowerShell есть некоторые нюансы, о которых я расскажу в этой статье.

    Итак, предположим, у меня есть скрипт start.ps1, который мне необходимо запускать ежедневно в течении 10 дней. Есть два способа решить эту задачу.

    Способ 1

    Для запуска скрипта воспользуемся оснасткой Task Scheduler, он же планировщик заданий. Найти его можно в разделе Administrative Tools, либо нажав Win+R и введя команду taskschd.msc . Открываем планировщик и в разделе Actions выбираем пункт Create Task.

    На вкладке General указываем имя и описание задания, а также (по необходимости) пользователя, от имени которого задание будет запускаться. Для того, чтобы задание выполнялось вне зависимости от того, залогинен ли пользователь в системе, выбираем опцию «Run whether user is logged on or not». Если для выполнения задания требуется повышение привилегий, то отмечаем опцию «Run with highest privileges».

    Далее идем на вкладку Triggers и создаем новый триггер, в котором будет храниться расписание запуска нашего задания. В поле Start указываем дату и время запуска, а в поле Expire — дату и время завершения задания. Указываем выполнять задание ежедневно (Daily) и задаем период повтора (Recur every) 1 день.

    Примечание. Если вы хотите запускать задание чаще, чем раз в день, то надо выбрать одноразовое выполнение (One time), а в разделе Advanced settings отметить пункт Repeat task every и указать время повторения, минимум 5 минут, максимум 1 час. Если этого недостаточно, то дополнительно в поле Delay task for up to можно указать временную задержку.

    И основное. Переходим на вкладку Action и указываем действие для запланированного задания. Напомню, что в целях безопасности PowerShell скрипты могут выполняться только интерактивно, то есть сначала надо запустить оболочку PowerShell и уже в ней указать путь к скрипту. Поэтому в поле «Action» указываем запуск powershell.exe, а в поле «Add Arguments» параметр -File и путь к нашему скрипту, вот так:

    File ″C:\Scripts\start.ps1″

    Также в поле аргументы можно указать:

    Command — выполняет указанные команды и любые другие параметры. Этот параметр тоже можно использовать для запуска скрипта, например: -Command ″& {C:\Scripts\start.ps1}″ . Кроме того, с его помощью можно передавать в скрипт параметры: -Command ″& {C:\Scripts\start.ps1 -a 1 -b 3}″ ;
    -ExecutionPolicy — задает политику выполнения скриптов для текущего сеанса, может принимать значения Unrestricted, RemoteSigned, AllSigned и Restricted. Заданная политика будет действовать только в текущем сеансе и имеет приоритет над любыми ранее созданными политиками;
    -NonInteractive — отключить вывод интерактивных запросов к пользователю;
    -WindowStyle Hidden — запуск окна PowerShell в скрытом режиме, незаметно для пользователя;
    -NoProfile — предотвращает загрузку профиля, что может несколько ускорить выполнение скрипта;
    -NoExit — оставить оболочку открытой после отработки скрипта. Это может понадобиться при проверке и отладке скрипта.

    Заполнив необходимые поля жмем ОК и сохраняем задание. Теперь скрипт будет запускаться по расписанию ежедневно в заданное время в течении 10 дней.

    Способ 2

    В PowerShell 3.0 появился новый функционал Sheduled Job, дающий возможность создавать запланированные задания прямо из консоли, не пользуясь оснасткой планировщика. Воспользуемся им для планового запуска нашего скрипта.

    Сначала создаем расписание запуска (ежедневно в полпятого вечера, в течении 10 дней):

    $t = New-JobTrigger -Daily -At 4:30PM -DaysInterval 10

    Затем сохраняем в переменной учетные данные:

    $cred = Get-Credential contoso\administrator

    В качестве опции указываем запуск задания с повышенными привилегиями:

    $o = New-ScheduledJobOption -RunElevated

    И регистрируем задание с именем Start:

    Register-ScheduledJob -Name Start -FilePath C:\Scripts\start.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o

    Чтобы убедится в том, что задание создано, можно открыть планировщик и найти наше задание в разделе Microsoft\Windows\PowerShell\SheduledJobs.

    Примечание. Для каждого запланированного задания PowerShell в директории %systemdrive%\Users\%username%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs создается одноименная папка. В этой папке находится само задание в XML-файле и папка Output, в которой, в подпапках по времени выполнения, хранится история выполнения задания — результат выполнения (файлs Result.xml) и статус задания (Status.xml). Эти файлы могут пригодиться для отладки и диагностики в том случае, если задание не отрабатывает должным образом.

    Execution Policy

    В заключение напомню об одном немаловажном моменте, а именно о политике выполнения скриптов Execution Policy. Посмотреть текущее значение политики можно командой Get-ExecutionPolicy . Политика выполнения может иметь значения:

    Restricted — блокируется выполнение любых скриптов. Значение по умолчанию;
    AllSigned — разрешено выполнение скриптов, имеющих цифровую подпись;
    RemoteSigned — скрипты, подготовленные на локальном компьютере, можно запускать без ограничений, скрипты, загруженные из Интернета — только при наличии цифровой подписи;
    Unrestricted — разрешено выполнение любых скриптов. При запуске неподписанного скрипта, который был загружен из Интернета, программа может потребовать подтверждение;
    Bypass — ничего не блокируется, никакие предупреждения и запросы не появляются.

    Обычно для безпроблемного выполнения скриптов достаточно задать значение RemoteSigned. Изменить текущее значение можно командой Set-ExecutionPolicy , например:

    Set-ExecutionPolicy RemoteSigned -force

    Примечание. Если указанная в команде политика выполнения противоречит групповой политике, то параметр запишется в реестр, но действовать не будет.

    1. Написание скрипта

    Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1 .

    Вот пример простого Power Shell срипта (файл systemInfo.ps1 ):

    # Retrieve WMI object for the operating system

    Get-WmiObject Win32_OperatingSystem

    Этот файл можно создавать и редактировать, например, в FAR Manager.

    Обратите внимание , что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd . То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.

    2. Запуск срипта

    Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами cd ), и затем запустить сам скрипт, обязательно прописав перед ним символы «.\» . Например, имеем путь к файлу скрипта d:\work\systemInfo.ps1 . Тогда команды запуска будут выглядеть так:

    cd \

    cd work

    .\systemInfo.ps1

    или так (просто указывается полный путь к скрипту):

    d:\work\systemInfo.ps1

    Скорее всего, при запуске скрипта появится следующая ошибка:

    Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

    строка:1 знак: 18

    CategoryInfo: NotSpecified: (:) , PSSecurityException

    FullyQualifiedErrorId: RuntimeException

    Ошибка появляется из-за того, что по-умолчанию в Power Shell включена максимальная политика безопасности, которая позволяет выполнять команды PowerShell в командной строке, но не позволяет в той же командной строке выполнить скрипт с командами PowerShell.

    Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:

    powershell -Command Set-ExecutionPolicy RemoteSigned

    Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd . После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.

    3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd

    Скрипт PowerShell можно выполнить и из обычной консоли Windows. Для этого можно воспользоваться командой:

    Powershell -File ./systemInfo.ps1

    Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.

    Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./» . То есть, если *.ps1 — файл лежит на локальном диске C: или D: , то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.

    Исправить запланированное задание не запускается для файла .BAT

    Если у вас есть файл .BAT, и вы пытаетесь настроить его автоматический запуск с помощью планировщика задач в Windows, возможно, вы столкнулись с проблемой, когда он просто не запускается, если вы не запустите задачу вручную.

    Я создал командный файл, который удаляет все файлы из временной папки при каждом запуске компьютера. Я создал основную задачу в планировщике заданий и надеялся на лучшее. К сожалению, ничего не произошло, когда мой компьютер загрузился. После долгих проб и ошибок я понял, как запустить скрипт.

    В этой статье я расскажу вам о настройках и разрешениях, которые необходимо настроить, чтобы запустить пакетный файл без ручного вмешательства.

    Шаг 1. Проверьте права доступа к файлам и папкам

    Первым шагом к решению этой проблемы является обеспечение того, чтобы учетная запись, используемая для запуска сценария в планировщике заданий, имела разрешения «Полный доступ» для папки, содержащей сценарий, самого сценария и любых папок / файлов, к которым сценарий обращается при запуске.

    Например, я создал следующий пакетный скрипт ниже:

     set folder = "C: \ test" cd / d% folder% for / F "delims =" %% i in ('dir / b') do (rmdir "%% i" / s / q || del "% % i "/ s / q) 

    Я сохранил файл .BAT в папку «Мои документы». Путь C: \ Users \ имя пользователя \ Documents . Я пошел в C: \ Users \ username, щелкнул правой кнопкой мыши на папке Documents и нажал на Properties . Затем я нажал на вкладку Безопасность .

    Как видите, учетная запись пользователя Aseem была явно добавлена ​​и получила разрешение « Полный доступ». Теперь вы должны сделать то же самое для папки, содержащей скрипт, и для самого скрипта. Не просто предполагайте, что если вы дадите разрешения для папки, содержащей сценарий, вы можете идти, потому что это не так. Наконец, установите разрешения для любых файлов и папок, с которыми будет взаимодействовать скрипт.

    В моем случае мне нужно было перейти в C: \ test, щелкнуть правой кнопкой мыши по этой папке и добавить туда свою учетную запись с разрешениями «Полный доступ». Это отчасти раздражает, что вы должны это делать, но это единственный способ запустить скрипт.

    Примечание . Учетная запись, используемая для запуска сценария, должна входить в локальную группу администраторов на компьютере. В моем случае учетная запись Aseem является учетной записью администратора и, следовательно, является частью локальной группы администраторов.

    Шаг 2. Проверьте настройки планировщика заданий

    Теперь перейдем к планировщику заданий и изменим там соответствующие настройки. Откройте планировщик задач и найдите свою задачу в разделе « Активные задачи ». Они должны быть перечислены в алфавитном порядке.

    Дважды щелкните по нему, и он сам откроет задачу в том же окне. Чтобы отредактировать задачу, вам нужно будет щелкнуть ее правой кнопкой мыши и выбрать « Свойства» .

    Здесь есть несколько вкладок, и пару вещей нужно проверить и изменить здесь. Во-первых, на вкладке Общие необходимо проверить учетную запись пользователя, которая используется для запуска задачи. В моем случае это учетная запись Aseem, которой я ранее дал разрешения в файловой системе и которая входит в группу администраторов на компьютере.

    Далее необходимо выбрать параметр « Выполнить» независимо от того, вошел пользователь в систему или нет, и выбрать Windows Vista, Windows Server 2008 в поле « Настроить для» .

    На вкладке « Действия » необходимо выбрать сценарий, нажать « Изменить», а затем добавить путь к папке, содержащей сценарий, в поле « Начать в (необязательно)» . Это может показаться ненужным, но это не так. В моем случае я поставил в поле C: \ Users \ Aseem \ Documents \ .

    Теперь нажмите OK, чтобы сохранить настройки. Когда вы это сделаете, может появиться диалоговое окно, в котором вы должны ввести пароль для учетной записи пользователя, которая будет запускать задачу. Это выдвигает другое требование. Вы не можете использовать учетную запись, которая не имеет пароля. Учетная запись пользователя должна иметь пароль для запуска задачи.

    Наконец, вы должны запустить задачу вручную один раз в планировщике задач, чтобы убедиться, что она выполняется. Если он работает нормально после того, как вы изменили все настройки, то он должен работать, когда он должен быть запущен. В моем случае это должно было произойти при запуске, и после внесения изменений все работало нормально.

    Обратите внимание, что если ваш сценарий обращается к различным компьютерам в домене при запуске, вы должны попытаться использовать учетную запись администратора домена для запуска задачи. Это гарантирует, что учетная запись имеет достаточно разрешений для доступа к удаленным компьютерам.

    Еще один момент, на который следует обратить внимание, — это если ваш скрипт обращается к ресурсам в общем сетевом ресурсе. Если ваш скрипт использует буквы для доступа к сети, он может не работать. Например, вместо того, чтобы использовать F: \ data \, вы должны использовать в сценарии \\ machinename \ share_name \ data \ . Если вы все еще не можете запустить скрипт, оставьте здесь комментарий, и я постараюсь помочь. Наслаждайтесь!

    Как автоматизировать сценарии PowerShell с помощью планировщика задач

    Microsoft Windows Task Scheduler может помочь вам автоматически запустить программу или сценарий PowerShell в определенное время или при соблюдении определенных условий. Вы также можете запланировать отправку электронных писем и даже отображение определенных сообщений. В этом блоге мы покажем вам, как запустить сценарий PowerShell из планировщика задач, который будет предупреждать о любой установке программного обеспечения на локальном компьютере.

    Мы также будем создавать запланированные задачи с помощью сценариев PowerShell.Вы узнаете, как:

    • Создание задач с помощью планировщика задач
    • Изменение или удаление запланированных задач
    • Создавайте запланированные задачи с помощью сценариев PowerShell.

    Создание задач с помощью планировщика задач

    Откройте планировщик заданий, нажав «Windows + R» и затем набрав «taskschd.msc» в открывшемся окне. Затем выполните следующие действия:

    1. Щелкните «Создать задачу» и введите имя и описание новой задачи. Чтобы запустить программу с правами администратора, установите флажок «Запускать с наивысшими привилегиями».В нашем примере мы назначим сервисную учетную запись для запуска задачи и будем запускать ее независимо от того, вошел ли пользователь в систему.

    2. Перейдите на вкладку «Триггеры» и нажмите кнопку «Создать…». Здесь вы можете указать условия, при которых задача будет выполнена. Например, вы можете выполнить его по расписанию, при входе в систему, в режиме ожидания, при запуске или при возникновении определенного события. Мы хотим, чтобы наша задача запускалась при любой установке нового программного обеспечения, поэтому мы выбираем «По событию» в раскрывающемся меню и выбираем «Приложение» в настройках журнала.Оставьте поле «Источник» пустым и установите для EventID значение «11707». Нажмите «ОК», чтобы сохранить изменения.

    3. Перейдите на вкладку «Действия» и нажмите «Создать…». Здесь вы можете указать действия, которые будут выполняться при выполнении условий триггера. Например, вы можете отправить электронное письмо или отобразить сообщение. В нашем случае мы хотим запустить программу, поэтому нам нужно создать сценарий PowerShell, который мы хотим запустить, и сохранить его с расширением «ps1». Вы можете найти сценарий здесь; он отправит предупреждение с подробностями об установленном программном обеспечении.

    Чтобы запланировать сценарий PowerShell, укажите следующие параметры:

    • Действие: Запустить программу
    • Программа \ скрипт: powershell
    • Добавить аргументы (необязательно): -File [Укажите здесь путь к файлу скрипта]

    Нажмите «ОК», чтобы сохранить изменения.

    4. Вкладка «Условия» позволяет указать условия, которые вместе с триггером определяют, следует ли запускать задачу.В нашем случае мы должны оставить на этой вкладке настройки по умолчанию.

    5. Вы также можете настроить дополнительные параметры для запланированного задания на вкладке «Настройки». Однако для нашего примера мы оставим их без изменений.

    6. Когда задача будет полностью настроена, система запросит у вас пароль учетной записи службы. Обратите внимание, что эта учетная запись должна иметь право «Вход в систему как пакетное задание». Введите пароль и нажмите «ОК», чтобы сохранить задачу.
    7. Для правильной работы планировщика заданий необходимо настроить службу планировщика заданий на запуск «Службы ».msc ». В списке служб найдите Планировщик заданий и дважды щелкните его. На вкладке «Общие» установите для типа запуска значение «Автоматический» и нажмите «ОК», чтобы сохранить изменения.

    Теперь всякий раз, когда новое программное обеспечение устанавливается на ваш Microsoft Windows Server, вы будете получать уведомление по электронной почте с указанием времени установки, имени программного обеспечения и идентификатора пользователя (SID) человека, который его установил.

    Изменение или удаление запланированных задач

    Чтобы изменить существующую задачу, щелкните ее правой кнопкой мыши в списке, выберите «Свойства», измените необходимые параметры и нажмите «ОК».Чтобы удалить запланированное задание, щелкните его правой кнопкой мыши, выберите «Удалить» и подтвердите действие.

    Создание запланированных задач с помощью сценариев PowerShell

    Теперь, когда вы знаете, как создать задачу с помощью планировщика задач, давайте узнаем, как создать запланированную задачу с помощью PowerShell. Предположим, мы хотим, чтобы наша задача запускалась ежедневно в 10 часов утра, и она должна выполнять сценарий PowerShell, который вы можете найти здесь, который будет отслеживать изменения членства в группах на сайте Active Directory.

    в Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), для создания запланированного задания необходимо использовать модуль TaskScheduler . Установите модуль, выполнив команду « Import-Module TaskScheduler » и используйте следующий сценарий для создания задачи, которая будет выполнять сценарий PowerShell с именем GroupMembershipChanges.ps1 ежедневно в 10:00:

     Импорт-модуль TaskScheduler $ task = New-Task
    $ task.Settings.Hidden = $ true
    Добавить-TaskAction -Task $ task -Path C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe –Аргументы «-File C: \ Scripts \ GroupMembershipChanges.ps1»
    Add-TaskTrigger -Task $ task -Daily -At «10:00»
    Зарегистрировать-Запланированное задание –Название «Управление группой мониторинга» -Задача $ task 

    Windows PowerShell 4.0 (Windows Server 2012 R2 и выше) не включает модуль планировщика заданий, поэтому этот сценарий не будет работать. Вместо этого в PowerShell 3.0 и 4.0 представлены новые командлеты для создания запланированных задач, New-ScheduledTaskTrigger и Register-ScheduledTask , которые делают создание запланированной задачи намного проще и удобнее.Итак, давайте создадим задачу, которая будет выполнять наш скрипт ежедневно в 10 утра, используя системную учетную запись (SYSTEM). Эту задачу будет выполнять учетная запись с повышенными привилегиями.

     $ Trigger = New-ScheduledTaskTrigger -At 10:00 am –Daily # Укажите настройки триггера
    $ User = "NT AUTHORITY \ SYSTEM" # Укажите учетную запись для запуска скрипта
    $ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ StartupScript.ps1" # Укажите, какую программу запускать и с ее параметрами
    Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest –Force # Укажите имя задачи 

    Другие варианты триггеров, которые могут быть полезны при создании новых задач, включают:

    • -AtStartup — Запускает вашу задачу при запуске Windows.
    • -AtLogon — запускает вашу задачу, когда пользователь входит в систему.
    • -Once — Запускает вашу задачу один раз. Вы можете установить интервал повторения с помощью параметра –RepetitionInterval .
    • — Еженедельно — Запускает вашу задачу один раз в неделю.

    Обратите внимание, что с помощью этих командлетов невозможно запустить выполнение «по событию», как мы это делали с инструментом планировщика заданий. Сценарии PowerShell с триггерами «по событию» намного сложнее, поэтому это реальный недостаток использования PowerShell, а не планировщика заданий.

    Заключение

    Как видите, легко создавать запланированные задачи с помощью планировщика заданий или PowerShell. Но помните, что неправильные изменения ваших запланированных задач могут вызвать перебои в обслуживании и снизить производительность сервера. Поэтому важно отслеживать все изменения в запланированных задачах.

    Джефф — бывший директор по разработке глобальных решений в Netwrix.Он давний блоггер Netwrix, спикер и ведущий. В блоге Netwrix Джефф делится лайфхаками, советами и приемами, которые могут значительно улучшить ваш опыт системного администрирования.

    Как запланировать сценарий PowerShell с помощью планировщика задач

    Сценарий

    PowerShell сокращает количество повторяющихся задач, выполняемых вручную. Если вы часто выполняете сценарии в заранее определенное время или через определенные промежутки времени, возможно, вы устали выполнять сценарии повторно.Затем вы можете использовать планировщик задач Windows, чтобы автоматизировать выполнение скриптов за вас. Это сэкономит ваше время и силы при ежедневном / еженедельном выполнении скрипта. Давайте посмотрим, как запланировать сценарий PowerShell через планировщик задач.

    Это можно сделать двумя способами.

    1. Планирование сценария PowerShell с помощью графического интерфейса планировщика заданий

    2. Планирование сценария PowerShell из планировщика заданий с помощью PowerShell

    Метод 1. Планирование сценария PowerShell с помощью планировщика задач

    Откройте планировщик заданий (его можно найти в «Инструменты администрирования» или нажав «Windows + R», чтобы открыть , запустить , а затем ввести «taskschd.мск ».)

    Чтобы запустить сценарий из Планировщика заданий, выполните следующие действия.

    1. Открыть планировщик задач -> Библиотека планировщика задач -> Создать задачу

    2. На вкладке Общие вы можете установить имя планировщика и описание задачи, например, для какой цели была создана задача.

    Доступные параметры безопасности описаны ниже.

    • Укажите пользователя, от имени которого будет запускаться задача.
    • Вы можете указать, что задача должна выполняться.Это можно сделать, установив переключатель с надписью « Run» Независимо от того, вошел ли пользователь в систему, а не . Если этот переключатель установлен, задача не будет выполняться в интерактивном режиме. Чтобы задача выполнялась в интерактивном режиме, выберите переключатель « Выполнять только тогда, когда пользователь вошел в систему» ​​.
    • Когда выбрано « Запускать вне зависимости от того, вошел ли пользователь в систему, », вы можете предложить ввести учетные данные учетной записи, независимо от того, установлен ли вы флажок « Не сохранять пароль » или нет.Если учетная запись не входит в систему во время выполнения задачи, будут использоваться сохраненные учетные данные.
    • Если для задачи требуются повышенные привилегии, выберите опцию « Запуск с наивысшими привилегиями ».

    3. Перейдите на вкладку Trigger и нажмите кнопку New . Здесь вы можете установить условия, запускающие задачу.

    • Вы можете указать, когда запускать задачу. Например, вы можете выполнить его по расписанию, при запуске, при входе в систему или при каждом конкретном событии, выбрав раскрывающееся меню « Начать задачу ».

    • Вы можете настроить, хотите ли вы запускать эту задачу один раз или ежедневно, еженедельно или ежемесячно в соответствии с вашим сценарием.
    • В «Расширенных настройках» вы можете выбрать задержку задачи, повторение задачи, остановку задачи, если она выполняется дольше указанного периода времени и даты истечения срока действия.
      • Задержка задачи до — добавляет случайную задержку, поэтому задача не будет отображаться в точное время дня.
      • Повторять задачу каждые — показывает, сколько раз задача должна запускаться после срабатывания триггера.
        • Повторять задачу каждые — Интервал времени между каждым повторением задачи
        • В течение — Как долго задача должна повторяться
      • Остановить задачу, если она выполняется дольше, чем — Если задача выполняется дольше ожидаемого времени или никогда не завершается, задача автоматически остановится, если достигнет указанного ограничения по времени.
      • Expire — По истечении указанного периода времени расписание не запускается.

    4. Затем откройте следующую вкладку « Действия » и нажмите кнопку «Новый ».

    • В раскрывающемся списке «Действие» по умолчанию установлено «Запустить программу». При необходимости его можно изменить.
    • Используя Обзор, выберите поле программы / сценария. Чтобы запланировать сценарий, нам нужно выбрать powershell.exe.
      Вы можете найти powershell.exe в папке system32 \ WindowsPowerShell \ v1.0.

    Если путь содержит пустое пространство, его следует заключить в кавычки.

    5. После настройки вы можете указать условия, определяющие, следует ли запускать задачу.Задача не будет запущена, если какое-либо указанное здесь условие не выполняется.

    6. На вкладке «Настройки» вы можете установить дополнительные расширенные настройки для управления выполнением задачи.

    Наконец, нажмите Ok , чтобы создать запланированный сценарий.

    Сценарий по расписанию будет работать, как ожидалось, в соответствии с вашим расписанием без каких-либо проблем. Если вы хотите проверить выполнение сценария, вы можете нажать Выполнить , щелкнув правой кнопкой мыши имя задачи.

    Автоматизация сценария PowerShell из планировщика задач с параметрами

    Если вы хотите запланировать сценарий PowerShell с параметрами, используйте следующий формат.

    Путь к скрипту -Param 1 Value1 -Param2 «Value 2»

    Путь к скрипту -Param 1 Value1 -Param2 «Value 2»

    Например, я собираюсь автоматизировать один из наших сценариев PowerShell: Экспорт отчета о состоянии MFA для пользователей Office 365

    Во время расписания вы можете явно передать учетные данные в качестве параметров, как показано ниже:

    C: \ GetMFAStatus.ps1 -Имя пользователя «XXX XX» -Пароль ****

    C: \ GetMFAStatus.ps1 -Имя пользователя «XXX XX» -Пароль ****

    Если в значении параметра есть пробел, значения должны быть заключены в кавычки.

    Если вы хотите передать параметр переключателя, вы можете использовать приведенный ниже синтаксис.

    C: \ GetMFAStatus.ps1 -EnabledOnly

    C: \ GetMFAStatus.ps1 -EnabledOnly

    Приведенный выше сценарий экспортирует состояние MFA пользователей Office 365, у которых включен статус MFA. Здесь -EnabledOnly — параметр переключателя.

    Дополнительную информацию о сценариях PowerShell, связанных с Office 365, можно найти в блоге O365Reports.com.

    Метод 2: Планирование сценария PowerShell из планировщика задач с помощью PowerShell

    Вместо графического интерфейса можно использовать командлеты PowerShell для создания задачи расписания, которая автоматизирует сценарий PowerShell. Он включает следующие шаги:

    1. Определить время для планировщика

    2. Установить Действия, выполняемые во время выполнения

    3. Планировщик сохранения

    Определить время для планировщика:

    New-SchdeuledTaskTrigger создает объект триггера запланированной задачи.С помощью этого командлета вы можете указать время начала задачи или запускать задачу несколько раз в день или неделю.

    $ Time = New-ScheduledTaskTrigger -At 16:00 PM -Once

    $ Time = New-ScheduledTaskTrigger -At 16:00 PM -Once

    Выше cmd создает триггер запланированной задачи, который запускается в 16:00 и запускается один раз.

    $ Time = New-ScheduledTaskTrigger -At 16:00 PM -Daily -DaysInterval 2

    $ Time = New-ScheduledTaskTrigger -At 4.00 вечера -Ежедневно -ДниИнтервал 2

    Выше cmd создает триггер запланированной задачи, который запускается каждые 2 дня в 16:00

    Установить действия, которые будут выполняться во время выполнения:

    New-SchdeuledTaskAction представляют действия, которые выполняются, когда планировщик задач запускает задачу. Задача может иметь одно действие или не более 32 действий. Когда вы указываете несколько действий, планировщик задач выполняет задачу последовательно.

    $ Action = New-ScheduledTaskAction -Execute PowerShell.exe -WorkingDirectory C: / Scripts -Argument “C: \ Scripts \ MFAStatus.ps1 -UserName XXXX -Password YYYY”

    $ Action = New-ScheduledTaskAction -Execute PowerShell.exe -WorkingDirectory C: / Scripts -Argument “C: \ Scripts \ MFAStatus.ps1 -UserName XXXX -Password

    Эта команда открывает PowerShell и меняет каталог на C: / Scripts, а затем вызывает сценарий MFAStatus.ps1.

    Планировщик сохранений:

    Register-ScheduledTask сохраняет запланированную задачу на локальном компьютере.

    Register-ScheduledTask -TaskName «Отчет о состоянии MFA расписания» -Trigger $ Time -Action $ Action -RunLevel Highest

    Register-ScheduledTask -TaskName «Отчет о состоянии MFA расписания» -Trigger $ Time -Action $ Action -RunLevel Highest

    Приведенный выше cmd сохраняет запланированную задачу с именем «Отчет о состоянии MFA расписания» в корневой папке. Сохраненная задача использует предварительно созданное действие и значения триггеров, которые задаются переменными $ Action и $ Time.

    Варианты использования:

    Используя планировщик задач, вы можете запланировать периодический запуск сценария PowerShell. Так что вам не нужно вручную запускать скрипт ежедневно / еженедельно / ежемесячно. В Интернете доступно больше сценариев, удобных для планировщика (учетные данные могут быть переданы в качестве параметра вместо сохранения внутри сценария). Я привел здесь несколько примеров.

    В этом блоге мы увидели, как автоматизировать сценарий PowerShell с помощью планировщика заданий.Какой подход к планированию вы предпочитаете — графический интерфейс или PowerShell? Дайте нам знать в комментариях.

    Кроме того, если вам нужны какие-либо улучшения, такие как получение запланированного отчета по электронной почте или что-то еще, мы все услышим 🙂

    Мы внимательно проверим ваши комментарии и поработаем над тем, чтобы удовлетворить ваши требования!

    Автоматизация сценариев Powershell с помощью планировщика задач

    На протяжении своего пути к системному администратору я всегда был сторонником максимально возможной автоматизации.Я автоматизирую сценарии Powershell с помощью планировщика задач или создаю функцию для интерактивного запуска в оболочке. Я глубоко убежден, что всегда должен стремиться автоматизировать работу.

    Сегодня мы сосредоточимся на , что такое Windows Task Scheduler , но, что более важно, на , как запускать сценарии Powershell из Task Scheduler для автоматизации ваших задач. Есть несколько предостережений, которые я усвоил за эти годы, но мы рассмотрим их позже в статье.

    Что такое планировщик заданий?

    Я полагаю, прежде чем мы углубимся в подробности того, как запускать сценарии Powershell в качестве запланированной задачи, было бы неплохо объяснить, что именно такое планировщик задач.

    Так что же такое планировщик заданий? Википедия объясняет Планировщик заданий как компонент Microsoft Windows, который предоставляет возможность планировать запуск программ или скриптов в заранее определенное время или через определенные промежутки времени.

    Другими словами, это способ планировать задания или определенные задачи через определенные промежутки времени в течение дня, недели, месяца или единовременно.

    Планировщик задач

    доступен на компьютерах с Windows Server и Windows Client. т.е. Windows Server 2016/2019 и Windows 10

    Как автоматизировать сценарии Powershell с помощью планировщика заданий

    Теперь, когда вы знаете, что это такое, давайте перейдем к тому, как вы можете использовать это в своих интересах. Первый шаг — понять, что мы хотим автоматизировать (или запланировать). В моем примере я собираюсь автоматически отправлять своим пользователям электронные письма, как только их пароль истечет в течение 10 дней. К счастью, у нас уже есть скрипт Powershell для получения даты истечения срока действия пароля, так что теперь это просто вопрос настройки задачи.


    Давайте перейдем к этому.

    • Сначала нам нужно открыть планировщик задач из меню «Пуск»
    • Выберите путь, по которому вы хотите настроить задачу. Обычно выбираю рут
    • Щелкните правой кнопкой мыши Task Scheduler Library и выберите Create Task (not basic task)
    • На вкладке Общие вставьте Имя и Описание
    • Установите учетную запись пользователя (предпочтительно служебную учетную запись с паролем, срок действия которого не истекает)
    • Отметьте опцию запуска независимо от того, вошел ли пользователь в систему или нет
    • Настройте раскрывающийся список для использования последней версии


    • На вкладке триггера выберите в расписании для задач по времени
    • Выберите частоту времени.Единовременно, ежедневно, еженедельно или ежемесячно
    • Так как мы хотим, чтобы задача выполнялась ежедневно , я установлю ее повторять каждые 1 день
    • В предварительных настройках , если вы хотите, чтобы запускал задачу каждые x часов , введите это здесь (т.е. 12 часов в течение 1 дня будут выполняться каждые 12 часов, пока вы не отключите его)
    • Убедитесь, что установлен флажок Включено


    • На вкладке Действия выберите запустить программу в раскрывающемся меню
    • В программе / сценарии выберите powershell.exe . (например, c: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe)
    • В разделе Добавить аргументы выберите расположение сценария Powershell (т. Е. C: \ _ Scripts \ Get-PasswordExpirationDate.ps1)

    ! Важно : если вы запускаете функцию, вам нужно будет загрузить ее в память, если ее нет в доступном модуле. Для этого вам нужно установить аргументы:
    “. C: \ _ Scripts \ Get-PasswordExpirationDate.ps1; Get-PasswordExpirationDate -DaysWithinExpiration 10 -SendEmail » Включая кавычки

    • На вкладке Условия оставьте значение по умолчанию, если вы не хотите что-то специально менять
    • На вкладке Настройки отметьте Разрешить запуск задачи по запросу
    • Нажмите ОК и введите пароль для учетной записи, на которой запущена задача

    Предоставление прав на вход в качестве пакетного задания

    Если учетная запись, которую вы используете для запуска запланированной задачи, не является администратором, вам может быть предложено следующее сообщение.«Эта задача требует, чтобы указанная учетная запись пользователя имела права« Вход в систему как пакетное задание »…


    Чтобы исправить это, сделаем следующее:

    • Перейти к start -> Введите gpedit.msc
    • Перейдите к Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя
    • Открыть Войдите в систему как пакетное задание и добавьте учетную запись пользователя

    Когда следует использовать планировщик заданий?

    Честно говоря, существует множество вариантов использования планировщика заданий, и возможности практически безграничны.Я бы определил это как все, что вы можете создать скриптом и хотите запускать более одного раза в определенный промежуток времени. Идеальным примером для меня является получение дат истечения срока действия пароля с помощью Powershell и автоматическое уведомление пользователя. Еще один хороший вариант использования — автоматическая перезагрузка сервера после развертывания обновлений Windows с помощью SCCM.

    Это действительно просто зависит от того, чем вы хотите заниматься. Был момент, когда на неделю у меня было запланировано около 50 с лишним заданий. Что угодно, от Exchange Online до задач Active Directory, если бы я мог написать сценарий (а я обычно могу), я бы настроил задание для его автоматизации.

    Автоматизация сценариев Powershell — Заключение

    Здесь я действительно надеюсь, что смог подробно объяснить, как автоматизировать сценарии Powershell с помощью планировщика задач, чтобы вы могли, надеюсь, установить его и забыть. Если вы не используете планировщик задач, дайте мне знать в комментариях, что вы используете для выполнения своих заданий. Опять же, я стремлюсь автоматизировать себя, уходя от работы, поэтому очень полезно, что я выполняю работу по существу, пока я сплю. Это освобождает время, чтобы попытаться автоматизировать больше элементов или найти способы улучшить среду с помощью других технологий.

    Если вам понравилась эта статья, обязательно ознакомьтесь с другими нашими сообщениями об администрировании сервера. Недавно я загрузил скрипт Powershell Get Reboot History, который может оказаться полезным. Пока вы занимаетесь этим, не забудьте заглянуть на наш канал YouTube, где вы найдете отличный видеоконтент.

    Использование планировщика задач Windows 10 со сценариями PowerShell — Обзор виртуализации

    Использование планировщика задач Windows 10 со сценариями PowerShell

    Том Фентон подробно описывает пошаговые инструкции по настройке Windows 10 для запуска Планировщика задач и о том, как настроить автоматическую задачу для запуска сценария PowerShell каждые четыре часа.

    Недавно у меня был проект, который требовал, чтобы я запускал сценарий PowerShell каждые четыре часа. Хотя я мог послушно входить в систему каждые четыре часа, чтобы вручную запустить скрипт, мне нравится спать, поэтому я хотел найти способ автоматизировать эту задачу.

    Я попытался сделать это с помощью встроенного средства планирования Windows, Task Scheduler, но после многих попыток обнаружил, что не могу просто указать сценарий PowerShell. Вместо этого, чтобы заставить его работать, мне нужно было сказать планировщику задач запустить PowerShell с моим сценарием PowerShell в качестве аргумента.В этой статье я покажу вам, как я настроил свою систему Windows 10, чтобы позволить мне запускать планировщик задач, а затем как я настроил автоматическую задачу для запуска моего скрипта каждые четыре часа.

    Первое, что мне нужно было сделать, это дать себе право назначить работу. Если вы этого не сделаете, вы получите следующее сообщение: « Ошибка входа в систему: пользователю не предоставлен запрошенный тип входа в систему на этом компьютере. »

    Чтобы предоставить себе эти права, я ввел SecPol.MSC в меню «Пуск» Windows.

    [Щелкните изображение, чтобы увеличить.]

    В диалоговом окне «Локальная политика безопасности» я перешел к «Локальные политики»> «Назначение прав пользователя»> «Вход в систему как пакетное задание ».

    [Щелкните изображение, чтобы увеличить.]

    Я выбрал Добавить пользователя или группу и добавил своего пользователя в политику.

    [Щелкните изображение, чтобы увеличить.]

    Поскольку планировщик заданий — это служба, я хотел убедиться, что она работает.Я сделал это, введя services.msc в меню Windows Пуск, затем дважды щелкнув Task Scheduler и убедившись, что в поле Startup Type установлено значение Automatic , а в поле Service Status установлено значение Running .

    [Щелкните изображение, чтобы увеличить.]

    Планирование задания с помощью интерфейса расписания задач
    Чтобы запланировать выполнение задания PowerShell каждые четыре часа, я ввел taskschd.msc в меню «Пуск» Windows, которое вызвало Планировщик заданий. На панели действий я щелкнул Create Task .

    [Щелкните изображение, чтобы увеличить.]

    Я ввел MaxCPU в текстовое поле Name , указал местоположение сценария, выбрал Run, вошел ли пользователь в систему или нет , и выбрал Windows 10 из раскрывающегося меню Configure for .

    [Щелкните изображение, чтобы увеличить его.]

    Я выбрал вкладку Триггеры , щелкнул Новый и настроил его на запуск каждые четыре часа в течение следующих 10 дней, начиная с 15:30.

    [Щелкните изображение, чтобы увеличить.]

    Я выбрал вкладку Действия, и щелкнул Новый , а затем Обзор . Затем я перешел к расположению исполняемого файла PowerShell ( C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe ) и ввел расположение сценария PowerShell, который я хотел запустить, в аргументах добавления ( необязательно) текстовое поле.

    [Щелкните изображение, чтобы увеличить.]

    Планировщик задач не только позволяет запускать задачу в определенное время, но также позволяет активировать многие другие триггеры, например, когда пользователь входит в систему. Эти триггеры можно установить в раскрывающемся меню Начать задачу после открытия вкладки Триггеры .

    [Щелкните изображение, чтобы увеличить.]

    Я считаю полезным вручную запустить задачу после того, как она была запланирована, чтобы убедиться, что я все настроил правильно.Чтобы запустить задание вручную, щелкните его правой кнопкой мыши и выберите Выполнить .

    [Щелкните изображение, чтобы увеличить.]

    Вы можете увидеть, успешно ли было выполнено задание, выбрав вкладку History . Вы также можете дважды щелкнуть любое событие на этой вкладке, чтобы получить более подробную информацию.

    [Щелкните изображение, чтобы увеличить.]

    Экспорт запланированной задачи
    После того, как я создал запланированную задачу, я хотел, чтобы эта задача выполнялась в паре разных систем Windows 10.Для этого я перешел в Планировщик заданий, щелкнул правой кнопкой мыши задачу, выбрал Экспорт , а затем указал место, в которое я хотел бы сохранить его.

    [Щелкните изображение, чтобы увеличить.]

    Задача была сохранена в виде XML-файла.

    [Щелкните изображение, чтобы увеличить.]

    Чтобы импортировать задачу, я скопировал XML-файл в другую систему, а затем запустил планировщик задач в этой системе. Затем я щелкнул правой кнопкой мыши папку, в которой должна появиться задача, выбрал в меню Import Task и выбрал Import task .

    [Щелкните изображение, чтобы увеличить.]

    При импорте задачи вы можете редактировать любые ее атрибуты, включая имя.

    [Щелкните изображение, чтобы увеличить.]

    Заключение
    Планировщик задач Microsoft Windows может запускать сценарии PowerShell, но для этого вам сначала нужно указать его в качестве аргумента для PowerShell. Надеюсь, эта статья поможет вам автоматизировать многие из ваших повседневных действий в системе Windows.


    Об авторе

    Том Фентон обладает богатым практическим опытом в области ИТ, накопленным за последние 25 лет в различных технологиях, причем последние 15 лет он уделял особое внимание виртуализации и хранению данных. В настоящее время он работает менеджером по техническому маркетингу в ControlUp. Ранее он работал в VMware старшим разработчиком курсов, инженером по решениям и в группе конкурентного маркетинга.Он также работал старшим инженером по валидации в Taneja Group, где возглавлял лабораторию валидационных услуг и сыграл важную роль в запуске практики vSphere Virtual Volumes. Он в Твиттере @vDoppler.

    Как запланировать автоматический запуск сценария PowerShell на Windows Server

    Введение

    Если вы хотите, чтобы ваш сценарий PowerShell автоматически запускался через определенные промежутки времени, вам необходимо запланировать выполнение сценария PowerShell с помощью планировщика задач Windows.

    Существуют и другие инструменты, которые можно использовать для планирования запуска сценария PowerShell в указанное время, но в этом руководстве показано, как это сделать с помощью планировщика задач Windows

    .

    Я буду использовать сценарий PowerShell, показанный ниже, для демонстрации этого руководства. Скрипт создает папки, если папка не существует в каталоге.

    Необходимое время: 5 минут.

    Чтобы запланировать автоматический запуск сценария PowerShell на Windows Server, выполните следующие действия:

    1. Откройте планировщик задач Windows

      Введите планировщик задач в поле поиска.Затем щелкните Планировщик заданий.

    2. Создание новой задачи

      Щелкните правой кнопкой мыши Библиотека планировщика задач . Затем выберите Создать задачу .

    3. Назовите задачу и введите дополнительное описание

      На общей вкладке новой задачи дайте задаче имя, используя поле name . Вы также можете описать задачу, используя поле description .

      В поле с меткой 3 обязательно выберите Выполнить независимо от того, вошел пользователь в систему или нет .Если вы выберете первый вариант, запланированный сценарий PowerShell не будет запускаться, пока пользователь не войдет в систему.

    4. Создайте триггер для автоматического запуска запланированного сценария PowerShell

      Для этого перейдите на вкладку триггеры . Затем щелкните Новый . Откроется окно Новый триггер .

      В раскрывающемся списке Начать задачу убедитесь, что выбран вариант По расписанию . Затем выберите, хотите ли вы запланировать запуск сценария PowerShell ежедневно , еженедельно или ежемесячно .

      Вы также можете запланировать повторение сценария PowerShell через определенный интервал. Для этого установите флажок Повторять задачу каждые . Затем щелкните раскрывающийся список, чтобы выбрать период.

      Другой очень важной конфигурацией является задача Остановить, если она работает дольше, чем значение . Установите этот флажок, чтобы автоматически останавливать запланированное задание. Вы также можете установить срок действия задачи. Задача перестанет выполняться после установленной даты.

      Когда вы закончите настройку триггера, нажмите Ok.

    5. Запланируйте сценарий PowerShell с помощью вкладки Действия

      Щелкните вкладку Действия . Затем щелкните Новый . В раскрывающемся списке Action убедитесь, что выбрано Start a program . Затем введите PowerShell.exe в поле программа / сценарий .

      Затем введите -File , а затем полный путь к сценарию в поле Добавить аргументы (необязательно) .Вот команда, которую я ввел в поле Добавить аргументы (необязательно) :

      -Файл «C: \ PS \ schedule powershell example \ Create-folder-from-text-file.ps1»

      Когда вы закончите нажмите ОК. Затем снова нажмите ОК. Когда вы нажмете «ОК» во второй раз, вам потребуется подтвердить пароль.

    • В поле Имя пользователя используйте формат Имя компьютера \ имя пользователя или Имя домена \ Имя пользователя.

    Когда вы закончите, вот как будет выглядеть вкладка Действия .Фактически, вы просите планировщик задач запустить эту команду —

     PowerShell.exe - файл "C: \ PS \ schedule powershell example \ Create-folder-from-text-file.ps1" 

    Чтобы убедиться, что сценарий PowerShell будет выполняться по расписанию, щелкните задачу правой кнопкой мыши и выберите «Выполнить».

    Заключение

    Для запуска сценария необходимо использовать параметр -File команды PowerShell.exe на вкладке действий. Это уловка. В противном случае ваш скрипт может не запуститься.

    Надеюсь, это руководство было для вас полезным.Чтобы оставить комментарий, предложение или задать вопрос, используйте форму «Оставить ответ» в конце этой страницы.

    Другие полезные руководства

    Дополнительные ресурсы и ссылки

    Как настраивать и управлять запланированными задачами с помощью PowerShell

    Вам нужно создать множество запланированных задач или автоматизировать создание запланированных задач? Если да, то вам повезло. В этой статье вы узнаете, как управлять запланированными задачами с помощью PowerShell.

    Запланированные задачи, которые выполняют простые действия, можно быстро выполнить и достаточно удобно, чтобы их можно было повторять с помощью интерфейса приложения планировщика заданий (GUI).Но системным администраторам или разработчикам может потребоваться развернуть более сложные задачи с несколькими расписаниями, триггерами или аргументами.

    К счастью, вы можете использовать PowerShell для создания запланированных задач и управления ими. Управление запланированными задачами с помощью PowerShell стало возможным благодаря встроенному в Windows модулю ScheduledTasks .

    Предварительные требования

    Так как это статья типа , обучающая на практике, , есть некоторые предварительные условия, чтобы вы могли следовать их указаниям.Ниже приведены требования для создания запланированных задач PowerShell с помощью PowerShell.

    • В примерах в этой статье используется Windows 10. Но Windows Server 2012 и новее могут делать то же самое.
    • Windows PowerShell 5.1 или PowerShell 7.
    • Было бы полезно, если бы у вас был редактор сценариев, такой как Visual Studio Code , Notepad ++ или Windows PowerShell ISE.

    Создание новой запланированной задачи

    Для работы запланированной задачи требуется как минимум два компонента; действие и триггер.Добавление контекста безопасности и набора связанных настроек необязательно. Для лучшего понимания см. Краткое описание каждого компонента запланированной задачи ниже:

    • Действие — действие, которое выполняет запланированная задача. Действие обычно заключается в запуске программы или сценария. Запланированная задача может иметь более одного действия.
    • Триггер — контролирует, когда запускается запланированная задача. Триггеры могут быть на основе времени, вроде, устанавливая расписание для ежедневного или ежечасного повторения.Триггеры также могут быть , основанными на действиях, , которые запускают задачу на основе обнаруженных действий, таких как запуск компьютера, вход пользователя в систему или зарегистрированные события.
    • Принципал — управляет контекстом безопасности, используемым для выполнения запланированной задачи. Среди прочего, принципал включает в себя учетную запись пользователя и необходимые привилегии, используемые запланированной задачей.
    • Параметры — — это набор параметров и условий, которые контролируют поведение запланированной задачи. Например, вы можете настроить задачу, чтобы она удалялась по прошествии определенного количества дней, в течение которых задача не использовалась.

    Во время создания запланированной задачи принципал и параметры явно не требуются. Вместо этого используются значения по умолчанию.

    Создание действия задачи

    Если вы хотите, чтобы запланированная задача что-то сделала, создайте новое действие для задачи. В этом примере вы создадите задачу, которая вызовет PowerShell.exe и запустит сценарий. Убедитесь, что у вас есть готовый редактор сценариев.

    Обратите внимание, что приведенный ниже сценарий является случайным примером, и вы не обязаны его использовать.Вы можете использовать любой сценарий, какой захотите. Однако использование приведенного ниже сценария дает легко проверяемый результат, который может подтвердить, сработало ли запланированное задание.

    Приведенный ниже пример сценария при выполнении получает десять самых последних событий из журнала событий приложения. Затем экспортируйте события в новый файл XML в папке c: \ temp . Скопируйте приведенный ниже код, вставьте его в свой редактор сценариев и сохраните с именем файла Get-LatestAppLog.ps1 в любой папке по вашему выбору.

      # Get-LatestAppLog.ps1
    
    ## Определите файл журнала
    $ logDir = 'c: \ temp'
    $ logFile = "$ logDir \ AppLog _ $ (Get-Date -format 'yyyy-mm-dd_hh-mm-ss-tt'). xml"
    
    ## Получить десять последних событий журнала приложений
    Get-WinEvent -LogName application -MaxEvents 10 |
    Экспорт-CliXml $ logFile -Force  

    В приведенном ниже коде используется New-ScheduledTaskAction для создания нового объекта действия запланированной задачи, хранящегося в переменной $ taskAction . Это действие вызовет оболочку PowerShell .exe и передайте аргумент для запуска C: \ scripts \ Get-LatestAppLog.ps1.

      # Создать новое действие задачи
    $ taskAction = New-ScheduledTaskAction `
        -Execute 'powershell.exe' '
        -Аргумент '-Файл C: \ scripts \ Get-LatestAppLog.ps1'
    $ taskAction  

    Скопируйте приведенную выше команду и запустите ее в PowerShell. Результирующий объект в переменной $ taskAction должен выглядеть, как на снимке экрана ниже.

    Создание нового запланированного действия задачи

    Добавление триггера

    Теперь, когда у вас создано действие задачи, следующий шаг — определить, когда задача должна запускаться.Для создания триггера используется командлет New-ScheduledTaskTrigger . Приведенная ниже команда создает триггер для запуска ежедневно в 15:00. Скопируйте и запустите код в PowerShell.

      # Создать новый триггер (ежедневно в 3 часа ночи)
    $ taskTrigger = New-ScheduledTaskTrigger -Daily -At 15:00
    $ tasktrigger  

    Результирующий объект в переменной $ tasktrigger должен выглядеть так же, как на изображении ниже.

    Создание триггера (ежедневно в 3 часа ночи)

    Регистрация задачи

    Итак, вы создали базовые требования для создания новой запланированной задачи.Следующим шагом будет создание запланированной задачи и регистрация ее в системе.

    В приведенном ниже коде используется командлет Register-ScheduledTask для регистрации запланированной задачи. Параметр -Action необходим для передачи объекта действия задачи, хранящегося в переменной с именем $ taskAction . Параметр -Trigger необходим для передачи содержимого переменной $ taskTrigger .

      # Зарегистрировать новую запланированную задачу PowerShell
    
    # Название вашей запланированной задачи.$ taskName = "ExportAppLog"
    
    # Опишите запланированную задачу.
    $ description = "Экспортировать 10 новейших событий в журнал приложения"
    
    # Зарегистрировать запланированную задачу
    Регистрация-ScheduledTask `
        -TaskName $ taskName `
        -Действие $ taskAction `
        -Trigger $ taskTrigger `
        -Описание $ description  

    Скопируйте приведенный выше код и запустите его в PowerShell. В результате регистрируется новая запланированная задача, как показано ниже.

    Регистрация новой запланированной задачи

    Выполнение задачи

    После создания запланированной задачи вы должны подтвердить, что запланированная задача теперь существует в системе. Откройте планировщик задач и найдите запланированное задание в списке. Вы должны увидеть зарегистрированную задачу в списке.

    Новое запланированное задание, отображаемое в приложении планировщика заданий.

    Вы также можете подтвердить существование зарегистрированной запланированной задачи, выполнив команду PowerShell ниже.

      Get-ScheduledTaskInfo -TaskName ExportAppLog
      

    После этого вы должны увидеть результат, аналогичный приведенному ниже на снимке экрана.

    Получение информации о запланированной задаче.

    И, наконец, ваша новая запланированная задача должна работать, чтобы определить, было ли то, что вы сделали до сих пор, успешным. Чтобы протестировать запланированную задачу, вы можете либо дождаться следующего расписания запуска, либо использовать приведенную ниже команду для запуска вручную.

      Start-ScheduledTask -TaskName ExportAppLog
      

    После запуска кода вы должны увидеть результат, аналогичный показанному ниже. Как видите, запуск кода создал XML-файл, который указывает на то, что запланированная задача сработала должным образом.

    Выполнение запланированной задачи

    Обновление существующей запланированной задачи

    После создания запланированной задачи в какой-то момент может потребоваться обновление некоторых ее аспектов. Возможно, вы захотите запустить его на час раньше или изменить расположение файла сценария. Это некоторые из изменений запланированной задачи, которые могут потребоваться.

    В следующих разделах вы узнаете, как вносить изменения в существующие зарегистрированные запланированные задачи с помощью PowerShell.

    Изменение учетной записи пользователя, параметров безопасности и параметров совместимости

    В предыдущем разделе запланированная задача запускается в том же контексте учетной записи пользователя, который ее создал.Что делать, если задача должна выполняться с использованием другой учетной записи пользователя, например, учетной записи службы.

    В этом примере вы измените параметры безопасности запланированной задачи на указанные ниже параметры.

    • Вы должны изменить учетную запись пользователя, чтобы запустить запланированное задание.
    • Разрешить выполнение задачи независимо от того, вошел ли пользователь в систему или нет.
    • Запустите с наивысшими уровнями привилегий.
    • Установите для задачи совместимость с Windows 10.

    Первая строка в приведенном ниже коде создаст объект-участник с новой учетной записью пользователя и задаст задачу для запуска с наивысшими привилегиями.Обязательно измените значение параметра -UserID , как требуется. Вторая строка настраивает совместимость задачи с Windows 10.

    Наконец, третья строка обновляет запланированную задачу ExportAppLog **, используя значения, хранящиеся в , переменные $ taskPrincipal и $ taskSettings . Скопируйте приведенный ниже код и запустите его в PowerShell.

      # Задайте идентификатор пользователя и уровень запуска участника задачи.
    $ taskPrincipal = New-ScheduledTaskPrincipal -UserId 'DEVPC \ svcTask' -RunLevel Highest
    # Установите значение совместимости задачи на Windows 10.$ taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8
    # Обновить основные настройки задачи
    Set-ScheduledTask -TaskName 'ExportAppLog' -Principal $ taskPrincipal -Settings $ taskSettings
      

    Вы заметите, что значение параметра -Compatibility равно Win8 . Не запутайся. Похоже, что Microsoft не обновляла «последнюю» версию с Windows 8. Тем не менее, указание значения Win8 приведет к совместимости с Windows 10.

    Затем приведенная ниже команда использует командлет Set-ScheduledTask для обновления существующей запланированной задачи ExportAppLog **. Обязательно измените значение пароля в параметре -Password , чтобы использовать правильный пароль учетной записи пользователя.

      # Обновление учетной записи пользователя и пароля задачи
    Set-ScheduledTask -TaskName 'ExportAppLog' -User $ taskPrincipal.UserID -Password 'ПАРОЛЬ'
      

    После выполнения указанной выше команды запланированная задача обновляется.Если вы проверите запланированную задачу, вы можете подтвердить, что параметры безопасности изменились.

    Параметр безопасности, учетная запись пользователя и параметры совместимости

    Смена триггера

    Иногда необходимо изменить расписание запуска. Может быть, из-за каких-то доработок или оптимизации ресурсов. В любом случае вы также можете использовать PowerShell для замены или добавления триггеров к запланированной задаче.

    В настоящее время запланированная задача ExportAppLog запускается каждый день в 15:00.Предположим, вам нужно изменить расписание триггеров на ежедневное в 16:30 и 1:00. Сначала вам нужно создать два новых объекта триггера задачи для двух расписаний.

      $ taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 16:30 PM
    $ taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00 AM
      

    Затем, чтобы обновить триггер запланированной задачи, используйте команду ниже. Вы заметите, что параметр -Trigger принимает два объекта триггера задачи, а именно $ taskTrigger1 и $ taskTrigger2 .

    Кроме того, поскольку вы обновляете запланированное задание с помощью пароля, сохраненного для учетной записи пользователя, вам необходимо снова ввести значения -User и -Password .

      Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $ taskTrigger1, $ taskTrigger2 -User 'DEVPC \ svcTask' -Password 'PASSWORD'
      

    Ниже показан ожидаемый результат после запуска кода.

    Обновление запланированной задачи с помощью нескольких триггеров

    И, как вы можете видеть ниже, теперь в запланированной задаче ExportAppLog есть два триггера.

    Запланированная задача с несколькими триггерами

    Удаление и восстановление запланированной задачи

    Запланированные задачи могут со временем устареть. В какой-то момент вам может потребоваться выполнить уборку для запланированных задач. В этом разделе вы узнаете, как управлять удалением запланированной задачи в PowerShell.

    Резервное копирование запланированной задачи

    Прежде чем продолжить удаление запланированных задач, рекомендуется сначала сделать резервную копию. Резервное копирование запланированных задач дает вам точку восстановления, когда что-то пойдет не так.

    Нет встроенного командлета для резервного копирования заданий по расписанию. Но все в PowerShell — это объект , , и возможен экспорт объектов в файл. Если вам нужно сделать резервную копию объекта в файл, используйте командлет Export-Clixml .

    В приведенном ниже примере кода выполняется экспорт запланированной задачи с именем ExportAppLog в файл. Вы можете изменить имя файла и местоположение по своему усмотрению.

      # Экспорт объекта запланированной задачи в XML
    Get-ScheduledTask -TaskName 'ExportAppLog' | Экспорт-Clixml c: \ temp \ ExportAppLog.xml
      

    На изображении ниже показан ожидаемый выходной XML-файл.

    Резервное копирование запланированной задачи

    Удаление запланированной задачи

    После того, как вы защитили резервную копию запланированного задания, теперь вы можете удалить это запланированное задание. Приведенный ниже код удаляет запланированную задачу с именем ExportAppLog . Скопируйте приведенный ниже код и запустите в PowerShell.

      # Отменить регистрацию запланированной задачи
    Отменить регистрацию-ScheduledTask -TaskName 'ExportAppLog' -Confirm: $ false  

    Хотя это и не требуется, всегда полезно подтвердить результат удаления запланированной задачи.Используйте команду ниже, чтобы убедиться, что запланированная задача больше не существует.

      Get-ScheduledTask -TaskName 'ExportAppLog'  

    Если запланированная задача больше не существует, вы должны получить результат, подобный показанному ниже.

    Проверка, если запланированная задача больше не существует

    Обратите внимание, что резервное копирование по расписанию не включает пароли.

    Восстановление запланированной задачи

    Итак, вы удалили запланированное задание, а потом оказалось, что этого делать нельзя! Что теперь? Такая ситуация заставляет вас еще больше ценить концепцию резервного копирования.

    Вы можете воссоздать запланированное задание, используя файл резервной копии XML с помощью PowerShell. А вот как можно восстановить.

    Сначала импортируйте резервную копию XML в сеанс PowerShell. Приведенный ниже код импортирует файл c: \ temp \ ExportAppLog.xml . В результате переменная $ stBackup будет содержать импортированные данные.

      # Импортировать резервную копию задания расписания
    $ stBackup = Import-Clixml -Path c: \ temp \ ExportAppLog.xml
      

    Затем используйте приведенный ниже код, чтобы сбросить значение LogOnType участника задачи на Interactive .Сброс значения LogonType имеет решающее значение для успешного восстановления запланированной задачи.

      # Сбросьте тип входа в систему на «Запускать, только когда пользователь вошел в систему».
    $ stBackup.Principal.LogonType = 'Интерактивный'
      

    Следующим шагом является создание нового объекта «Запланированная задача». Приведенный ниже код создает новую запланированную задачу. Переменная $ restoreTask сохраняет результирующий объект запланированной задачи.

    Вы заметите, что значения, переданные в параметры, импортированы из резервной копии.Импортированные значения находятся в переменной $ restoreTask . Параметры: Action , Trigger , Settings и Principal.

      # Создать новый объект запланированной задачи, используя импортированные значения
    $ restoreTask = New-ScheduledTask `
        -Действие $ stBackup.Actions `
        -Trigger $ stBackup.Triggers `
        -Настройки $ stBackup.Settings `
        -Principal $ stBackup.Principal
      

    После создания объекта запланированной задачи пора зарегистрировать запланированную задачу.Используйте приведенный ниже код, чтобы зарегистрировать восстановленную запланированную задачу.

    В этом примере имя задачи — « ExportAppLog_restored ». Параметр InputObject принимает объект запланированной задачи в переменной $ restoreTask . Убедитесь, что вы используете правильные значения пользователя и пароль .

      Регистрация-Запланированная задача `
        -TaskName 'ExportAppLog_restored' '
        -InputObject $ restoreTask `
        -Пользователь 'DEVPC \ svcTask' '
        -Пароль "ПАРОЛЬ"
      

    Код готов.Скопируйте и запустите код в PowerShell, чтобы восстановить удаленную запланированную задачу. На снимке экрана ниже показан ожидаемый результат после запуска кода.

    Восстановление удаленного запланированного задания из XML-резервной копии

    Теперь запланированное задание зарегистрировано в системе. На снимке экрана ниже показано восстановленное запланированное задание.

    Поиск восстановленной запланированной задачи

    Сводка

    Функция «Запланированные задачи» в Windows — отличный инструмент для настройки задач или заданий. Вы можете создавать как самые простые, так и более сложные задачи.Настройки и параметры гибкие.

    Модуль «Запланированные задачи PowerShell» позволяет настраивать запланированные задачи с помощью команд PowerShell. Этот модуль предоставляет возможность и средства для программного создания и развертывания запланированных задач на локальных и удаленных компьютерах.

    Корпорация Майкрософт не обновила модуль ScheduledTasks , и некоторые расширенные настройки еще не так легко представить в виде командлетов PowerShell. Одним из примеров является создание триггера для « При разблокировке рабочей станции. ”Но вы можете получить эти расширенные настройки, используя существующий класс CIM планировщика задач.

    Тем не менее, модуль PowerShell Scheduled Tasks по-прежнему является отличным и функциональным инструментом, который вы можете добавить в свой арсенал PowerShell.

    Список литературы

    Планирование сценариев PowerShell с помощью планировщика задач

    Вы теряете слишком много времени, чтобы вручную запускать сценарии PowerShell каждую неделю? Существует множество фреймворков, инструментов и продуктов, которые предлагают вам возможность настроить таймер.Однако Windows уже содержит так называемый планировщик задач .

    PowerShell и планировщик задач

    Планировщик заданий можно найти через поиск Windows:

    Создать базовую задачу

    Затем вам нужно создать новую базовую задачу:

    Здесь вам нужно выбрать:

    • как вызвать задачу
    • когда выполнять задачу (триггер)
    • и какие действия следует предпринять

    Например, я выбираю Daily…

    … и выберите время:

    Вдобавок хотим запустить программу:

    Теперь у нас есть разные возможности.Вы можете явно указать путь к PowerShell.exe или просто написать PowerShell.exe. Я решил выбрать второй вариант, потому что он мне кажется более легким.

    Автоматизация групп с PS? Вам стоит взглянуть на DynamicGroup. Все уже поставлено, стабильно, обновлено. Включены индивидуальные фильтры. Здесь вы можете бесплатно протестировать его в течение 30 дней.

    Передача аргументов PowerShell

    Теперь становится сложно. Если в сценарий PowerShell необходимо передать параметры, синтаксис понять непросто.Но мы дошли до этого.

    Или выписано:

    -Команда «& ‘C: \ temp \ TestScript.ps1′-p1’hallo’-p2’welt'»

    -Команда «& ‘C: \ temp \ TestScript.ps1′-p1’hallo’-p2’welt'»

    Вызов новой задачи

    Тогда мы можем закрыть мастер. Создается новая задача, которая также отображается в списке задач:

    Скрипт очень простой.Он принимает только два параметра и записывает их вместе в текстовый файл:

    Param ( $ p1, $ p2 ) ($ p1 + «» + $ p2) | Out-Файл «C: \ temp \ test.txt» -Приложение

    Param (

    $ p1,

    $ p2

    )

    ($ p1 + «» + $ p2) | Out-Файл «C: \ temp \ test.txt» -Приложение

    Успешный результат:

    Минусы или риски

    Вы должны убедиться, что он работает все время.Индивидуализация скриптов требует времени и, конечно же, требует ноу-хау PowerShell. Я просто хочу отметить, что вы должны делиться тем, что вы создаете, с другими, иначе вы можете создать черный ящик. 🙂

    Заключение

    Нетрудно создать простую задачу, которая планирует сценарий PowerShell. Все, что вам нужно знать, — это немного незнакомый синтаксис, который можно использовать для передачи аргументов Powershell. Как только это будет сделано, дальнейшие сценарии автоматизации больше не будут мешать.

    Вы все еще не хотите тратить время на скрипт PowerShell для изменения разрешений? Программное обеспечение DynamicGroup поможет вам быстро и легко автоматизировать группы.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *