Ejecutar un archivo por lotes desde el programador de tareas sin que el usuario inicie sesión


10

Estoy tratando de ejecutar un archivo por lotes en Windows 7 desde el Programador de tareas. Puedo ejecutar bien el archivo por lotes si lo ejecuto desde el símbolo del sistema.

Si lo ejecuto desde el Programador de tareas para que solo se ejecute cuando el usuario haya iniciado sesión, la tarea se ejecutará sin ningún problema. Sin embargo, cuando se ejecuta cuando el usuario no ha iniciado sesión, el Programador de tareas parece que está ejecutando el archivo, pero no sucede nada.

Intenté cambiar el archivo por lotes a nada más que a la siguiente línea para asegurar que no se deba a lo que hay en el archivo por lotes:

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

Y eso no funciona. ¿Algunas ideas? Lo ejecuto con los más altos privilegios y con una cuenta de administrador que tiene permisos completos para el archivo por lotes y la carpeta donde se está escribiendo el archivo.


¿Qué cuenta estás usando para ejecutar la tarea? ¿Qué desencadenantes estableciste?
camilohe

Intente ejecutar la tarea como una cuenta de servicio del sistema.
SamAndrew81

Respuestas:


20

PROGRAMA DE TAREAS: EL PROGRAMA DE LOTES PROGRAMADO NO CORRE

Propiedades del programador de tareas. . .

Desde Windows Task Scheduleren el trabajo Properties (ver abajo la mayoría de las capturas de pantalla) en. . .

  • 1. General pestaña, asegúrese de que las siguientes opciones estén seleccionadas / marcadas o desmarcadas tal como se muestra en la pantalla de impresión A

    • Desmarcar Run only when user is logged on
    • Cheque Run whether user is logged on or not
    • Cheque Run with the highest privileges
  • 2. Conditions pestaña, asegúrese de que las siguientes opciones estén seleccionadas , marcadas o desmarcadas tal como se muestra en la Pantalla de impresión B

    • Cheque Wake the computer to run this task
  • 3. Actions tabule, haga clic Edity asegúrese de que Start in (optional)esté configurado tal como se muestra en el siguiente ejemplo ( NO ponga comillas dobles a su alrededor) para la ruta completa que señala dónde se encuentra el script por lotes SIN una barra invertida final " \" Imprimir pantalla C


CONSIDERACIONES DE SEGURIDAD

  • Una vez que presione OK( 2. arriba), debería solicitarle la credencial para ejecutar esto, y esa credencial es lo que necesitará acceso al EXECUTEarchivo por lotes donde exista, y también necesitará acceso para hacer lo que sea que esté ejecutando el archivo por lotes que escribiste.

  • Puede ser mejor configurar una cuenta de usuario de servicio / proxy estático para este proceso y luego usar sus credenciales para ejecutar el proceso. Debería asegurarse de que su contraseña sea segura y esté configurada para que nunca caduque, y necesita acceso al EXECUTElote y ejecutar lo que sea que esté ejecutando el proceso por lotes y cualquier comando y recursos, etc. Se utiliza también.

  • Parece que la opción Run whether user is logged on or notDEBE marcar la opción Run with highest privilegespara que realmente se ejecute como se espera del Programador de tareas.

Comprobación de errores

  • Si hay un problema con el script por lotes real, pero el Programador de tareas de Windows realmente lo ejecuta para ejecutarlo, pero la lógica del script por lotes falla , etc. por cualquier razón, el Programador de tareas puede no ver este error en este nivel. Desde su perspectiva (por defecto la mayor parte del tiempo), está ejecutando el archivo por lotes, por lo que siempre que pueda ejecutarlo y tenga acceso para hacerlo, su trabajo se realiza con éxito.

  • Agregue la comprobación o el registro de errores a la lógica del script por lotes para detectar (o solucionar ) los problemas a este nivel, lo que incluye garantizar que el contexto de seguridad en el que el programador por lotes lo ejecute tenga el acceso adecuado a los comandos, recursos, etc.


Consideraciones de política de grupo

COMPRUEBE LA POLÍTICA DEL GRUPO E INICIE SESIÓN COMO PERMISOS DE TRABAJO POR LOTES

Respuesta: En Windows, este privilegio se otorga a través de la Política de seguridad local o de dominio . Para hacer esto usando la Política de seguridad local , siga estos pasos.

  1. En el Panel de control , abra Herramientas administrativas , luego Política de seguridad local .
  2. Debajo de Configuración de seguridad , abra Políticas locales y resalte Asignación de derechos de usuario .
  3. Busque Iniciar sesión como un trabajo por lotes . Abra las propiedades y agregue los usuarios que necesiten este derecho.
  4. Cuando termine, guarde los cambios y cierre la ventana de Configuración de seguridad local .

Sus cambios deben tener efecto de inmediato. Para realizar cambios en la Política de seguridad de dominio, en un controlador de dominio, use la utilidad Política de seguridad de dominio en el Panel de control


Lógica de secuencia de comandos por lotes con unidades asignadas o ruta completa de UNC, y problemas. . .

Si su secuencia de comandos hace referencia a una unidad de red asignada pero lo desea Run whether the user is logged on or not, entonces, en este contexto, la asignación de unidad puede no estar allí para que el proceso por lotes haga lo que se espera.

Si es posible, use UNCrutas en su lógica de secuencia de comandos por lotes en lugar de una letra de unidad asignada para evitar problemas. De lo contrario, es posible que deba usarlo PUSHD \\ServerName\ShareNameal comienzo del proceso por lotes y luego usarlo POPDal final del proceso por lotes. Puede asignar la unidad NET USE X: \\ServerName\ShareNameal comienzo del proceso por lotes y luego desconectar la unidad NET USE X: /DELETEal final del proceso por lotes.


OTROS

  • MS HOTFIX (KB977353): el elemento de preferencia de tarea inmediata de directiva de grupo no se ejecuta en un equipo cliente que ejecuta Windows 7 o Windows Server 2008 R2

  • Mire la Settingspestaña de la tarea programada y la opción listada como Stop the task if it runs longer than:. Si esta opción está marcada y el período de tiempo es inferior al de un script que se está ejecutando, el Programador de tareas lo eliminará antes y, por lo tanto, es posible que no obtenga los resultados esperados. Esto es algo más que debe verificar al solucionar problemas por si acaso.

    ingrese la descripción de la imagen aquí

  • Desde la Triggerspestaña de la tarea programada cuando seleccione la Editopción, asegúrese de establecer que la Start:hora y la fecha tengan un valor que NO haya pasado ya. Asegúrese de que esta tenga la fecha y la hora establecidas en un valor en el futuro . De lo contrario, puede observar que el trabajo indica que está programado para ejecutarse en la próxima hora programada como era de esperar; sin embargo, el Programador de tareas no lo ejecuta ni la pestaña Programador de tareas History muestra que alguna vez se ejecutó (porque no lo es). Simplemente edite el activador y actualícelo con una fecha y / o hora futura para resolver este problema si lo está experimentando.

    ingrese la descripción de la imagen aquí


IMPRESIÓN DE PANTALLAS

Imprimir pantalla A

ingrese la descripción de la imagen aquí

Imprimir pantalla B

ingrese la descripción de la imagen aquí

Imprimir pantalla C

ingrese la descripción de la imagen aquí

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.