Назад | Перейти на главную страницу

Почему планировщик задач Windows 2008 не запускает мой пакетный файл?

Я был асом с запланированными задачами Windows 2003. Все просто заработало. Похоже, что это не относится к планировщику задач 2008 года. Мне он нужен для запуска командного файла, который вызывает osql.exe, а затем копирует вновь созданный файл в общий сетевой ресурс. Следовательно, для задачи необходимо сохранить пароль, чтобы она могла получить доступ к удаленным ресурсам. Так что я позволил ему сохранить пароль. Я также вошел в политику локальной безопасности и добавил пользователя в разрешение «задача требует, чтобы учетная запись пользователя входила в систему как пакетное задание». Если я сделаю:

runas / пользователь: mydomain \ myser cmd

затем запустите командный файл, он работает каждый раз. Если я попытаюсь запустить его из графического интерфейса, он не запустится, даже если в столбце «Состояние» указано «Выполняется». Учетная запись пользователя, которую я использую, является пользователем домена и не более того. Для вкладки Действия у меня есть программа, запускаемая в каталоге, где существует пакетный файл.

Любые идеи? Кто-нибудь еще борется с этим?

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

У меня была аналогичная проблема с обычным запуском командного файла, но не с 08 R2 Task Scheduler. Он будет работать, если «Запускать только при входе пользователя в систему», но не при «Запускать независимо от того, вошел ли пользователь в систему или нет».

Оказалось, что что-то пытается получить доступ к дискам по букве диска. Я не уверен, было ли это запрограммировано напрямую, или 08 пытался быть умным и преобразовывал путь UNC в подключенный диск. Однако в моем ini-файле программы были только пути в формате UNC. Очевидно, буквы дисков не отображаются, когда пользователь не вошел в систему.

В итоге мне пришлось сопоставить диск в пакетном файле с учетными данными (он не проходит). Тогда это сработало.

Это может быть или не быть похожей проблемой для вас.

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

Пуск - Администрирование - Локальная политика безопасности - Локальные политики - Параметры безопасности - «Сетевой доступ: не разрешать хранение паролей и учетных данных для сетевой аутентификации» - по умолчанию отключено, переключите на «включено».

Создайте файл .bat в каталоге вашего exe. В первой строке перейдите в каталог вашего exe. Во второй строке вызовите ваш exe следующим образом:

pushd "% ~ dp0"

YourExe.exe

В планировщике задач не вызывайте исполняемый файл, а вызывайте файл bat