Планировщик задач Windows: автозапуск скрипта при включении ПК
Зачем использовать Планировщик вместо обычной папки Автозагрузка
Обычная папка «Автозагрузка» (shell:startup) запускает программы только после того, как пользователь физически вошел в систему и ввел пароль. Если сервер перезагрузился ночью после обновлений, фоновые службы (скрипты резервного копирования, боты, монтирование дисков) не запустятся до прихода администратора на работу.
Преимущества Планировщика задач (taskschd.msc)
| Параметр | Папка Автозагрузка | Планировщик задач |
|---|---|---|
| Запуск без входа пользователя | Нет | Да (Выполнять вне зависимости от регистрации) |
| Запуск с наивысшими правами (без запроса UAC) | Нет | Да (С наивысшими правами) |
| Перезапуск при сбое | Нет | Да (Автоматический перезапуск через N минут) |
Пошаговое создание задачи автозапуска
- Нажмите
Win + R, введитеtaskschd.mscи нажмите Enter. - В правом меню «Действия» нажмите «Создать задачу...» (не путать с простой задачей).
- На вкладке «Общие»:
- Укажите понятное имя (например, AutoBackupScript).
- Поставьте переключатель «Выполнять для всех пользователей» (или «Выполнять вне зависимости от регистрации пользователя»).
- Обязательно отметьте галочку «Выполнить с наивысшими правами».
- Перейдите на вкладку «Триггеры» → нажмите «Создать...»:
- В поле «Начать задачу» выберите: «При запуске» (для запуска при включении сервера) или «При входе в систему». Нажмите ОК.
- Перейдите на вкладку «Действия» → нажмите «Создать...»:
- Действие: «Запуск программы».
- В поле «Программа или сценарий» укажите путь к файлу:
C:\Scripts\backup.bat. - Для скриптов PowerShell: в поле программа введите
powershell.exe, а в поле «Добавить аргументы»:-ExecutionPolicy Bypass -File "C:\Scripts\myscript.ps1". - В поле «Рабочая папка» обязательно укажите папку, где лежит скрипт (например,
C:\Scripts\).
- Нажмите ОК и введите пароль учетной записи администратора для сохранения задачи.
Совет: Проверьте созданную задачу немедленно: кликните по ней правой кнопкой мыши в списке и нажмите «Выполнить». В колонке «Результат последнего запуска» должно появиться (0x0) — операция успешно завершена.
Частые вопросы (FAQ)
Что означает код результата (0x1) или (0x80070002)?
Код 0x1 означает внутреннюю ошибку в самом скрипте. Код 0x80070002 означает, что планировщик не смог найти указанный файл (проверьте правильность путей и пробелы в них).
Почему скрипт, работающий в фоне, не показывает окна на экране?
Если включен режим «Выполнять вне зависимости от регистрации пользователя», задача запускается в изолированной системной сессии 0 (Session 0 Isolation) без графического интерфейса.
Как создать задачу через командную строку (schtasks)?
Выполните: `schtasks /create /tn "MyTask" /tr "C:\app.exe" /sc onstart /ru "SYSTEM" /rl HIGHEST`.
Почему скрипт не видит сетевой диск Z: при автозапуске?
Сетевые диски монтируются для конкретного сеанса пользователя. В скриптах автозапуска всегда используйте прямые сетевые UNC-пути вида `\\server\share\folder` вместо букв дисков.