Планировщик задач - задача завершена «успешно» с кодом выхода 0x8007001

Планировщик задач - задача завершена «успешно» с кодом выхода 0x8007001

Я запускаю ежедневную задачу на Windows 10 Pro, которая должна

  • вывести компьютер из спящего режима
  • запустить cmd.exe, выполнить командный скрипт для копирования файла на сетевой диск, создать файл журнала
  • выключи компьютер

При запуске задачи вручную из планировщика задач все выполняется так, как задумано.

При выходе компьютера из спящего режима планировщик задач пробуждает компьютер в указанное время, но, по всей видимости, командный файл (.cmd) вообще не выполняется. Файл журнала не создается, файл не копируется, компьютер не выключается. Задача помечена как"успешно завершено с кодом возврата 2147942401"что является шестнадцатеричным 0x80070001. Этот код ошибки, похоже, указывает на «недопустимую функцию», но я понятия не имею, что это может быть, тем более, что задача отлично выполняется при ручном запуске, как и было сказано.

Вот обзор настроек задачи (перевод с немецкого, но должно быть понятно):

  • Общие: выполнять независимо от имени пользователя; не сохранять пароль; наивысшие привилегии; настроено для Windows 10

  • Действия: запустить программу cmd.exe; аргументы: /c "path-to-cmd-script\script.cmd >> logfile.txt"; запустить в: пусто

  • Условия: реактивировать компьютер

  • Настройки: разрешить выполнение при необходимости; если выполнение не удалось, перезапускать каждые 10 минут; завершить задачу, если выполнение длится более 3 дней; принудительно завершить активную задачу, если она не остановлена ​​по запросу; не запускать новый экземпляр

У меня есть еще одна задача — сделать резервную копиюточнота же настройка, которая работает нормально (просыпается, запускает скрипт, затем выключает компьютер).

Любая подсказка будет высоко оценена, вопросы приветствуются.

решение1

На самом деле нет. Однако я использовал самые простые настройки планировщика задач и теперь это работает.

Общий:

  • использовать только когда пользователь вошел в систему
  • использовать наивысшие привилегии
  • настроить для Windows 10

Действие:

Программа/скрипт: C:\Windows\System32\cmd.exe
Аргументы:/c <your batch file with parameters>

Условия:

  • повторно активировать компьютер

Настройки:

  • разрешить исполнение при необходимости
  • выполнить как можно скорее, если начало было пропущено
  • если задача не выполнена, перезапускать каждые 5 минут
  • завершить задачу, если выполнение превысит 3 дня
  • принудительное прекращение, если не остановлено по запросу
  • остановить текущий экземпляр, если задача уже запущена

Теперь он запускается каждый день в указанное время на протяжении месяцев.

решение2

Powershell капризничает с запланированными задачами. Я потратил на это много часов. Ниже приведен метод, который я использую для устранения неполадок с помощью проверенного и надежного пакетного файла.

Попробуйте создать промежуточный пакетный файл и сделать так, чтобы пакетный файл вызывал powershell. С помощью пакетного файла вы можете сделать кучу echo, которые можно вывести в журнал. Это позволит вам увидеть полный stdout/stderr для процесса. Это может помочь в более детальном устранении неполадок.

Журнал можно создать, добавив к аргументам запланированной задачи > "<path_to_log_file>" 2>&1.

решение3

У меня задача иногда работала, а иногда нет. Согласно истории запланированных задач, при сбое она выглядит так, как будто она работает около 40 секунд, ничего не делает и завершается action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401.

  • В этом случае не было смысла возиться с настройками групповой политики, потому что иногда этобыработают, но не всегда (см.https://stackoverflow.com/questions/48343993/пакетный-файл-из-запланированной-задачи-возвращает-код-2147942401/).

  • Упрощение, пересоздание, перенастройка моей задачи не решили проблему.

  • Я также рассматривал возможность испортить свой пакетный файл и избавиться от стандартного перенаправления вывода, тем самым отказавшись от возможности ведения журнала (и став слепым). Или просто запустить реальный процесс .exe вместо использования пакетного файла вообще. Это могло бы быть решением.

  • Я также рассматривал возможность замены запланированной задачи «при запуске» на службу, что было бы довольно дорогим экспериментом для такой тривиальной проблемы.

В конечном итоге я подумал о добавлении задержки в запланированную задачу и попытался настроить свою задачу как отложенную службу — службы могут быть либо «Автоматическими», либо «Автоматическими (Отложенный запуск)». Для запланированных задач «При запуске» это триггер, который имеет свои собственные индивидуальные свойства, включая возможность добавлять задержку:

Изображение, иллюстрирующее решение для отсрочки запланированной задачи при запуске

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

Связанный контент