Вопрос или проблема
У меня следующая проблема. На нашем Windows Server 2012 R2 есть запланированная задача, которая вызывает пакетный файл, который, в свою очередь, вызывает VB скрипты.
Эти скрипты просто загружают 5 изображений и сохраняют их в папку под определенным именем. Если я вызываю бат-файл напрямую через командную строку, всё работает отлично, но с планировщиком я получаю следующую информацию.
Файлы сохраняются в том же разделе, где находится скрипт, просто в другой папке, к которой пользователь также имеет доступ, потому что он добавлен в группу администраторов.
Информация о событии: Идентификатор события: 201 Код результата 2147943645 успешно выполнено
Код результата, похоже, соответствует следующему сообщению об отказе в доступе.
Результат последнего выполнения: Отказано в доступе 0x80070005
Мои исследования приводят меня к необходимости попробовать некоторые изменения конфигурации.
-
Запустить задачу в планировщике с наивысшими привилегиями -> та же ошибка
-
Изменить безопасность для %windir%/system32/cmd.exe -> пользователь уже в
группе администраторов - Удалить ” из start in -> там ничего нет, также добавление
папки, где находится скрипт, ничего не меняет
Заранее благодарю за любые подсказки, вопросы, информацию по этой проблеме.
Я думаю, что следует проверить Контекст безопасности задачи вашей запланированной задачи.
Вы сохранили пароль пользователя в задаче?
Ошибка может быть вызвана отсутствием сетевого доступа.
Скорее всего, вам нужно предоставить системную привилегию “Вход в качестве пакетной задачи” учетной записи службы, которую вы используете для выполнения запланированной задачи.
(Вы же не запускаете запланированную задачу с вашими собственными личными учетными данными, верно?)
Из описания TechNet:
Позволяет пользователю войти в систему с помощью функции очереди пакетов. Например, когда пользователь отправляет задачу в расписание, планировщик задач входит в систему как пользователь пакета, а не как интерактивный пользователь.
По умолчанию только учетная запись LocalSystem имеет привилегию входа в систему как пакетная задача.
Это можно настроить в доменной GPO или локальной GPO, в следующем расположении:
Конфигурация компьютера\Параметры Windows\Параметры безопасности\Локальные политики\Назначение прав пользователя
Чтобы подтвердить источник отказа “Отказано в доступе”, вам следует проверить журнал безопасности Windows в Просмотрщике событий. Отфильтруйте журнал, чтобы показывать только неудачные аудиты, а затем найдите последнее время, когда вы попытались запустить вашу запланированную задачу.
Ответ или решение
Ошибка 0x80070005, также известная как "доступ запрещен", при выполнении задачи в Планировщике задач Windows Server 2012 R2 может возникать по нескольким причинам, связанным с правами доступа и разрешениями. Давайте разберем данную проблему более детально, используя подход TEA (Теория, Пример, Применение).
Теория
Ошибка этого типа часто связана с недостатком разрешений у учетной записи, под которой выполняется задача. В Windows, выполнение задач в планировщике отличается от запуска скриптов вручную в командной строке. При запуске задачи в Планировщике она выполняется в контексте пользователя, указанного в конфигурации задачи, и этот пользователь должен обладать определенными привилегиями, такими как "Log on as a batch job", которые позволяют запускать задания на сервере. Кроме того, вы должны учитывать учетные данные, используемые для доступа к ресурсам, необходимым вашему скрипту для выполнения, таким как сетевые ресурсы.
Пример
Допустим, у нас есть сценарий, в котором задача должна скачивать изображения и сохранять их на диске. Когда вы выполняете ваш .bat файл вручную, он используется вашими текущими учетными данными, которые могут иметь необходимые права и доступ к ресурсам. Однако при запуске из Планировщика задач может использоваться другая учетная запись, у которой нет этих прав.
Применение
Чтобы решить проблему, следуйте этим шагам:
-
Проверьте контекст безопасности задачи:
Убедитесь, что задача настроена на выполнение от имени пользователя, который имеет необходимые права и доступ к ресурсам. Проверьте пункт "Выполнять с наивысшими правами" в настройках задачи. Убедитесь, что в задаче указаны правильные учетные данные, и пароль к учетной записи сохранен. -
Настройте привилегии "Log on as a batch job":
Откройте "Локальную политику безопасности" или "Политику домена" и перейдите в "Конфигурация компьютера -> Параметры Windows -> Параметры безопасности -> Локальные политики -> Назначение прав пользователя". Добавьте здесь пользователя или группу, под которыми выполняется задача, в список "Log on as a batch job". -
Проверьте журналы Windows:
В "Просмотре событий" Windows откройте журнал безопасности и отфильтруйте по "Сбой аудита". Это позволит увидеть, какая именно проблема с доступом возникла во время выполнения задачи. Это может помочь выявить недостающие разрешения или неправильные настройки. -
Тестируйте под тем же пользователем:
Если возможно, выполните .bat скрипт вручную, войдя под тем же пользователем и в том же контексте, что используется в Планировщике задач. Это поможет подтвердить, что проблема в правах, а не в самом скрипте.
Следуя данным рекомендациям, вам удастся устранить ошибку 0x80070005, обеспечив правильное выполнение вашей задачи в Планировщике задач на Windows Server 2012 R2.