Programador de tareas: tarea completada "exitosamente" con código de salida 0x8007001

Programador de tareas: tarea completada "exitosamente" con código de salida 0x8007001

Estoy ejecutando una tarea diaria en Windows 10 Pro que se supone que

  • despertar la computadora de la hibernación
  • inicie cmd.exe, ejecute un script de comando para copiar un archivo a una unidad de red, cree un archivo de registro
  • apaga el ordenador

Al iniciar la tarea manualmente desde el programador de tareas, todo se ejecuta según lo previsto.

Al dejar la computadora en modo de hibernación, el programador de tareas activa la computadora a la hora especificada, pero aparentemente el archivo de comando (.cmd) no se ejecuta en absoluto. No se crea ningún archivo de registro, no se copia ningún archivo y la computadora no se apaga. La tarea está marcada como"completado exitosamente con el código de retorno 2147942401"que es hexadecimal 0x80070001. Este código de error parece indicar una "función ilegal", pero no tengo idea de qué podría ser, especialmente porque la tarea funciona bien cuando se inicia manualmente, como se dijo.

Aquí hay una descripción general de la configuración de tareas (traducida del alemán, pero debe quedar clara):

  • General: ejecutar independientemente del inicio de sesión del usuario; no almacene la contraseña; privilegios más altos; configurado para Windows 10

  • Acciones: iniciar el programa cmd.exe; argumentos: /c "ruta-al-cmd-script\script.cmd >> logfile.txt"; empezar en: vacío

  • Condiciones: reactivar la computadora

  • Configuración: permitir la ejecución si es necesario; si la ejecución falla, reinicie cada 10 minutos; finalizar la tarea si la ejecución dura más de 3 días; forzar la finalización de la tarea activa si no se detiene a pedido; no iniciar nueva instancia

Tengo otra tarea haciendo una copia de seguridad conexactamentela misma configuración que funciona bien (se activa, ejecuta un script y luego apaga la computadora).

Cualquier sugerencia es muy apreciada, las preguntas son bienvenidas.

Respuesta1

En realidad no. Sin embargo, he utilizado la configuración más sencilla del programador de tareas y ahora funciona.

General:

  • utilizar sólo cuando el usuario ha iniciado sesión
  • usar los privilegios más altos
  • configurar para Windows 10

Acción:

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

Condiciones:

  • reactivar la computadora

Ajustes:

  • permitir la ejecución si es necesario
  • ejecutar lo antes posible si se perdió el inicio
  • si la tarea falla, reinicie cada 5 minutos
  • finalizar la tarea si la ejecución excede los 3 días
  • forzar la terminación si no se detiene a pedido
  • detener la instancia actual si la tarea ya se está ejecutando

Ahora funciona todos los días a la hora especificada durante meses.

Respuesta2

Powershell es quisquilloso con las tareas programadas. He quemado muchas horas con esto. A continuación se muestra un método que utilizo para solucionar problemas utilizando el archivo por lotes probado y comprobado.

Intente crear un archivo por lotes intermedio y haga que el archivo por lotes llame a PowerShell. Con el archivo por lotes puede hacer un montón de ecos que puede enviar a un registro. Esto le permitirá ver la salida estándar/stderr completa del proceso. Esto puede ayudar a solucionar problemas con más detalle.

El registro se puede crear añadiendo argumentos a la tarea programada > "<path_to_log_file>" 2>&1.

Respuesta3

Para mí, la tarea a veces funcionaba y otras no. Según el Historial de tareas programadas, cuando falla, parecería como si hubiera estado ejecutándose durante aproximadamente 40 segundos, sin hacer nada y completando action "C:\windows\SYSTEM32\cmd.exe" with return code 2147942401.

  • En este caso, no tenía sentido alterar la configuración de la Política de grupo porque a vecesharíatrabajo, pero no siempre (verhttps://stackoverflow.com/questions/48343993/batch-file-from-scheduled-task-returns-code-2147942401/).

  • Simplificar, recrear y reconfigurar mi tarea no solucionó el problema.

  • También consideré eliminar mi archivo por lotes y deshacerme de la redirección de salida estándar, abandonando así la capacidad de registro (y quedando ciego). O simplemente ejecutar un proceso .exe real, en lugar de utilizar un archivo por lotes. Esta podría haber sido una solución.

  • También consideré reemplazar la tarea programada "al inicio" por un servicio, lo que habría sido un experimento bastante costoso para un problema tan trivial.

Al final, consideré agregar un retraso en la tarea programada y busqué configurar mi tarea como un servicio retrasado; los servicios pueden ser "Automáticos" o "Automáticos (inicio retrasado)". Para las tareas programadas "Al inicio", el disparador tiene propiedades individuales propias, incluida la capacidad de agregar un retraso:

Imagen que muestra la solución para retrasar una tarea programada al inicio

Creo que a veces mi tarea programada se iniciaba unos milisegundos antes y algún servicio o funcionalidad del sistema operativo aún no estaba disponible o no estaba permitido. Simplemente agregar un pequeño retraso en el gatillo solucionó el problema.

información relacionada