Вопрос или проблема
Я хочу создать пакетный файл, который создает запланированную задачу для выполнения .cmd файла, когда конкретный пользователь входит в систему. На данный момент у меня есть следующее:
@echo off
schtasks /CREATE /RU %username% /TN "TaskName" /TR "C:\folder\file.cmd" ^
/SC ONLOGON /DELAY 0000:10 /IT /RL highest
PAUSE
Эта команда создает задачу нормально, но при просмотре свойств триггера опция ‘Любой пользователь’ отмечена вместо ‘Конкретного пользователя’. Я пытался найти решения повсюду, но все указывало на использование /IT
с /RU
.
Также, как побочный вопрос, нужно ли мне включать /PU
в скрипт? Я планирую запускать пакетный файл на нескольких машинах и считаю, что это будет проблемой безопасности/внедрения спрашивать у людей их пароли.
Как упоминалось на https://technet.microsoft.com/en-us/library/cc725744(v=ws.11).aspx, “параметр /it указывает на то, что задача выполняется только тогда, когда (конкретный пользователь) вошел в систему.”
Вы должны игнорировать графический интерфейс планировщика задач, где упоминается “При входе любого пользователя” и на самом деле попробуйте перезагрузить ваше устройство. Вы обнаружите, что конкретная команда выполняется только при входе с учетной записью (конкретного пользователя).
Ответ или решение
Для создания задачи по расписанию, которая будет запускать файл .cmd при входе в систему конкретного пользователя, можно использовать команду schtasks
. В вашем случае вы уже создали команду, но она неправильно определяет, что задача должна запускаться только для конкретного пользователя. Следующий вариант позволить вам правильно настроить эту задачу.
Полный скрипт для создания задачи
Вот как вы можете модифицировать свой скрипт:
@echo off
setlocal
rem Здесь задайте имя пользователя, для которого будет создана задача.
set "username=Имя_пользователя"
rem Создание задачи по расписанию для конкретного пользователя
schtasks /CREATE /TN "TaskName" /TR "C:\folder\file.cmd" /SC ONLOGON /RU %username% /RL HIGHEST /DELAY 0000:10
endlocal
Объяснение параметров командной строки
/CREATE
: Создает новую задачу./TN
: Задает имя вашей задачи./TR
: Указывает путь к исполняемому файлу или скрипту, который будет выполняться./SC ONLOGON
: Задает триггер для задачи, чтобы она запускалась при входе в систему./RU
: Указывает учетную запись, от имени которой будет выполняться задача./RL HIGHEST
: Устанавливает уровень выполнения задачи на самый высокий./DELAY
: Задает задержку перед запуском задачи. В вашем случае это 10 минут.
Важные моменты
-
Использование /PU: Параметр
/PU
необходим, если вы хотите указать пароль для запланированной задачи. Однако, как вы заметили, это может быть проблемой с точки зрения безопасности, поскольку пользователю придется вводить свой пароль. Если задача создается от имени конкретного пользователя, и он уже вошел в систему, ввод пароля не требуется. -
Проверка: После создания задачи рекомендуется перезагрузить систему и протестировать, запустится ли файл .cmd при логине указанного пользователя. Вы можете проверить соответствие настроек в планировщике задач (Task Scheduler), чтобы убедиться, что параметр "От имени конкретного пользователя" активен.
-
Тестирование: Хотя вы можете не увидеть изменений в графическом интерфейсе Task Scheduler, важно протестировать работоспособность задачи путем выполнения входа в систему от имени указанного пользователя.
Заключение
Таким образом, с помощью команды schtasks
вы можете создать расписание на выполнение скрипта для конкретного пользователя в Windows. Убедитесь, что учли все аспекты безопасности и настройки, чтобы задача работала корректно в различных средах. Если вам нужно будет адаптировать этот скрипт для других пользователей или машин, просто замените имя пользователя в строке set "username=Имя_пользователя"
.