Agendador de tarefas - tarefa concluída "com sucesso" com código de saída 0x8007001

Agendador de tarefas - tarefa concluída "com sucesso" com código de saída 0x8007001

Estou executando uma tarefa diária no Windows 10 Pro que deveria

  • acordar o computador da hibernação
  • inicie cmd.exe, execute um script de comando para copiar um arquivo para uma unidade de rede, crie um arquivo de log
  • desligar o computador

Ao iniciar a tarefa manualmente no agendador de tarefas, tudo é executado conforme planejado.

Ao deixar o computador no modo de hibernação, o agendador de tarefas desperta o computador no horário especificado, mas aparentemente o arquivo de comando (.cmd) não é executado. Nenhum arquivo de log é criado, nenhum arquivo é copiado e o computador não é desligado. A tarefa está marcada como"concluído com sucesso com o código de retorno 2147942401"que é hexadecimal 0x80070001. Este código de erro parece indicar uma "função ilegal", mas não tenho ideia do que possa ser, principalmente porque a tarefa funciona bem quando iniciada manualmente, como dito.

Aqui está uma visão geral das configurações da tarefa (traduzida do alemão, mas deve estar clara):

  • Geral: executa independente do login do usuário; não armazene senha; privilégios mais elevados; configurado para Windows 10

  • Ações: iniciar o programa cmd.exe; argumentos: /c "caminho para cmd-script\script.cmd >> logfile.txt"; começar em: vazio

  • Condições: reativar o computador

  • Configurações: permite a execução se necessário; se a execução falhar, reinicie a cada 10 minutos; encerrar tarefa se a execução durar mais de 3 dias; forçar o encerramento da tarefa ativa se não for interrompida mediante solicitação; não inicie uma nova instância

Eu tenho outra tarefa fazendo um backup comexatamentea mesma configuração que está funcionando bem (acorda, executa um script e desliga o computador).

Qualquer dica é muito apreciada, perguntas são bem-vindas.

Responder1

Na verdade não. No entanto, usei as configurações mais simples do agendador de tarefas e agora funciona.

Em geral:

  • use somente quando o usuário estiver logado
  • usar privilégios mais altos
  • configurar para Windows 10

Ação:

Programa/roteiro: C:\Windows\System32\cmd.exe
Argumentos:/c <your batch file with parameters>

Condições:

  • reativar o computador

Configurações:

  • permitir a execução se necessário
  • execute o mais rápido possível se o início foi perdido
  • se a tarefa falhar, reinicie a cada 5 minutos
  • encerrar a tarefa se a execução exceder 3 dias
  • forçar a rescisão se não for interrompido mediante solicitação
  • pare a instância atual se a tarefa já estiver em execução

Agora ele funciona todos os dias no horário especificado durante meses.

Responder2

O Powershell é meticuloso com tarefas agendadas. Eu queimei muitas horas com isso. A seguir está um método que uso para solucionar problemas usando o arquivo em lote testado e comprovado.

Tente criar um arquivo em lote intermediário e faça com que o arquivo em lote chame o PowerShell. Com o arquivo em lote, você pode fazer vários ecos que podem ser gerados em um log. Isso permitirá que você veja o stdout/stderr completo do processo. Isso pode ajudar na solução de problemas com mais detalhes.

O log pode ser criado anexando argumentos à tarefa agendada > "<path_to_log_file>" 2>&1.

Responder3

Para mim, a tarefa às vezes funcionava e às vezes não. De acordo com o histórico de tarefas agendadas, em caso de falha, parece que está em execução há cerca de 40 segundos, sem fazer nada e concluindo action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401.

  • Nesse caso, não fazia sentido mexer nas configurações da Política de Grupo porque às vezesseriafunciona, mas não sempre (vejahttps://stackoverflow.com/questions/48343993/batch-file-from-scheduled-task-returns-code-2147942401/).

  • Simplificar, recriar e reconfigurar minha tarefa não resolveu o problema.

  • Também considerei destruir meu arquivo em lote e me livrar do redirecionamento de saída padrão, abandonando assim a capacidade de registro (e ficando cego). Ou simplesmente executando um processo .exe real, em vez de usar um arquivo em lote. Esta poderia ter sido uma solução.

  • Também considerei substituir a tarefa agendada "na inicialização" por um serviço, o que teria sido uma experiência bastante cara para um problema tão trivial.

Por fim, considerei adicionar um atraso na tarefa agendada e procurei configurar minha tarefa como um serviço atrasado - os serviços podem ser "Automáticos" ou "Automáticos (Início Atrasado)". Para tarefas agendadas "Na inicialização", é o gatilho que possui propriedades individuais próprias, incluindo a capacidade de adicionar um atraso:

Imagem que descreve a solução para atrasar uma tarefa agendada na inicialização

Acredito que minha tarefa agendada às vezes era iniciada alguns milissegundos antes do previsto e algum serviço ou funcionalidade do sistema operacional ainda não estava disponível ou permitido. Simplesmente adicionar um pequeno atraso no gatilho resolveu o problema.

informação relacionada