Запуск пакетного файла из планировщика задач без входа пользователя в систему

10

Я пытаюсь запустить командный файл в Windows 7 из планировщика заданий. Я могу запустить командный файл нормально, если я запускаю его из командной строки.

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

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

echo "success" >> c:\temp\test.log

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

yhussain
источник
Какой аккаунт вы используете для запуска задачи? Какие триггеры вы установили?
Camilohe
Попробуйте запустить задачу в качестве учетной записи системной службы.
SamAndrew81

Ответы:

20

РАСПИСАНИЕ ЗАДАНИЯ: СЦЕНАРИЙ ЗАПЛАНИРОВАННОЙ ПАРТИИ НЕ РАБОТАЕТ

Свойства планировщика задач. , ,

Из Windows Task Schedulerна работе Properties (см. Большинство снимков экрана внизу) в. , ,

  • 1. General убедитесь, что нижеперечисленные параметры выбраны / отмечены или не отмечены, как показано на экране печати A

    • Uncheck Run only when user is logged on
    • Проверьте Run whether user is logged on or not
    • Проверьте Run with the highest privileges
  • 2. Conditions Вкладка, убедитесь , что ниже опций выбора , проверяется , или бесконтрольно так же , как показано на Print Screen B

    • Проверьте Wake the computer to run this task
  • 3. Actions нажмите вкладку Editи убедитесь, что Start in (optional)она установлена ​​так, как показано в примере ниже ( НЕ ставьте двойные кавычки вокруг него) для полного пути, указывающего, где находится пакетный скрипт, БЕЗ окончательной обратной косой черты " \" Экран печати C


СООБРАЖЕНИЯ БЕЗОПАСНОСТИ

  • Как только вы нажмете OK( 2. выше), он должен запросить у вас учетные данные для запуска этого EXECUTEфайла , и именно эти учетные данные потребуют доступа к пакетному файлу, где он существует, и также потребуется доступ для выполнения любого запускаемого пакетного файла. что ты выписал.

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

  • Кажется, опция, которую Run whether user is logged on or notвы ДОЛЖНЫ проверить, Run with highest privilegesчтобы она работала так, как ожидалось от планировщика заданий.

Проверка ошибок

  • Если есть проблема с фактическим пакетным сценарием, но планировщик задач Windows фактически выполняет его, чтобы запустить его, но логическая ошибка пакетного сценария выдает ошибки и т. Д. По какой-либо причине, планировщик задач может не увидеть этот сбой на этом уровне. С его точки зрения (по умолчанию в большинстве случаев) он выполняет командный файл, поэтому, если он может его выполнить и имеет доступ к нему, его работа выполнена успешно.

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


Вопросы групповой политики

ПРОВЕРЬТЕ ПОЛИТИКУ ГРУППЫ И ВХОДИТЕ КАК РАЗРЕШЕНИЕ НА РАБОТУ

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

  1. На панели управления откройте Администрирование , затем Локальная политика безопасности .
  2. Под настройками безопасности откройте Локальные политики и выделите Назначение прав пользователя .
  3. Найдите Вход в систему как пакетное задание . Откройте свойства и добавьте всех пользователей, которым необходимо это право.
  4. Когда закончите, сохраните ваши изменения и закройте окно Local Security Settings .

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


Логика пакетного сценария с подключенными дисками или полным UNC-путем и проблемы. , ,

Если ваш сценарий ссылается на подключенный сетевой диск, но вы этого хотите Run whether the user is logged on or not, то в этом контексте сопоставление дисков может фактически отсутствовать, чтобы пакетный процесс мог выполнить то, что ожидалось.

Если возможно, используйте UNCпути в логике пакетного сценария, а не букву подключенного диска, чтобы избежать проблем. В противном случае вам может понадобиться использовать PUSHD \\ServerName\ShareNameв начале пакетного процесса, а затем использовать POPDв конце пакетного процесса. Вы можете сопоставить диск с NET USE X: \\ServerName\ShareNameв начале пакетного процесса, а затем отключить диск с NET USE X: /DELETEв конце пакетного процесса.


ДРУГАЯ

  • MS HOTFIX (KB977353): элемент предпочтения «Немедленная задача групповой политики» не запускается на клиентском компьютере под управлением Windows 7 или Windows Server 2008 R2

  • Посмотрите на Settingsвкладку запланированного задания и опцию, указанную как Stop the task if it runs longer than:. Если выбрана эта опция, а период времени меньше, чем у сценария, который запускается, планировщик заданий прекратит его раньше, и поэтому вы можете не получить ожидаемых результатов. Это что-то еще, чтобы проверить при устранении неполадок на всякий случай.

    введите описание изображения здесь

  • На Triggersвкладке запланированного задания, когда вы выбираете Editопцию, обязательно установите Start:время и дату для значения, которое НЕ уже передано. Убедитесь, что для этого значения даты и времени установлены значения в будущем . В противном случае вы можете заметить, что задание указывает, что оно запланировано на следующий запланированный срок, как вы ожидаете; однако он не выполняется планировщиком заданий, и вкладка планировщика заданий не History показывает, что он когда-либо выполнялся (потому что это не так). Просто отредактируйте триггер и обновите его, указав будущую дату и / или время, чтобы решить эту проблему, если она возникла.

    введите описание изображения здесь


ПЕЧАТНЫЕ ЭКРАНЫ

Экран печати A

введите описание изображения здесь

Экран печати B

введите описание изображения здесь

Экран печати C

введите описание изображения здесь

Сок Pimp IT
источник