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

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

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

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

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

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

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

ПЛАНИРОВЩИК ЗАДАЧ: НЕ ЗАПУСКАЕТСЯ ЗАПИСАННЫЙ ПАКЕТНЫЙ СКРИПТ

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

Из Windows Task Scheduler на работе Properties (см. самые нижние снимки экрана) в. . .

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

    • Снимите отметку Run only when user is logged on
    • Проверьте Run whether user is logged on or not
    • Проверьте Run with the highest privileges
  • 2. Conditions вкладку, убедитесь, что следующие параметры Выбрать, проверил, или не отмечен как показано на Печать экрана 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. Когда закончите, спасти ваши изменения и закройте Настройки локальной безопасности окно.

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


Логика пакетного сценария с подключенными дисками или полным 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 tab показывает, что он когда-либо выполняется (потому что это не так). Просто отредактируйте триггер и обновите его, указав дату и / или время в будущем, чтобы решить эту проблему, если она у вас возникла.


ПЕЧАТЬ ЭКРАНОВ

Печать экрана A

Печать экрана B

Печать экрана C