windows powershell windows-server-2008-r2 taskscheduler

windows - Ejecutar PowerShell en el Programador de tareas



windows-server-2008-r2 taskscheduler (3)

Estoy usando PowerShell para descargar datos del correo electrónico.

Quiero ejecutar este proceso por PowerShell. Cuando ejecuto un script como este:

D:/script.ps1

en powershell.exe funciona bien.

Cuando lo programo en el Programador de tareas, no sucede nada.

Intenté configurarlo como Programa / script:

powershell Powershell.exe powershell.exe

Añadir argumentos:

-executionpolicy bypass -file D:/script.ps1 -file D:/script.ps1 -file "D:/script.ps1"

Y nada funciona. Estoy usando Windows 2008 R2.



La resolución de problemas de las tareas programadas es un problema en la parte trasera, porque realmente no se puede ver lo que está sucediendo. Estas son algunas cosas que es posible que desee verificar:

  • Compruebe que su línea de comandos funciona en principio, por ejemplo, ejecutándola desde CMD (en su caso, intente ejecutar powershell.exe -File "D:/script.ps1" ). Si eso te da algún error, primero debes corregirlo.

  • Si tiene la intención de ejecutar la tarea como un usuario en particular, inicie CMD como ese usuario y ejecute la misma línea de comando para verificar si el usuario tiene todos los permisos necesarios para lo que sea que esté haciendo el script.

  • Compruebe si su tarea realmente finalizó o si el proceso aún se está ejecutando (a través de Process Explorer , Get-Process , Task Manager, ...).

  • Verifique el resultado de la última ejecución para el código de salida del comando.

  • Habilite el historial de sus tareas programadas ( Acción → Habilitar el historial de todas las tareas ). Eso le dará al menos algo de información sobre lo que está haciendo la tarea, si comienza en absoluto y si / qué errores ocurrieron. Necesita derechos administrativos para habilitar el historial de tareas.

  • Consulte el registro de eventos para ver si hay errores / advertencias relacionados con la ejecución de la tarea.

  • Agregue declaraciones de registro al script que está ejecutando para registrar la información de progreso. Personalmente, prefiero iniciar sesión en el registro de eventos, ya que eso evita problemas de permisos del sistema de archivos.

    Write-EventLog -LogName Application -Source EventSystem -EventID 100 -EntryType Information -Message ''Your log message.''

    Si tiene privilegios de administrador en el sistema, puede registrar un origen de eventos propio y usarlo en la declaración de registro anterior en lugar de abusar de un origen existente como EventSystem :

    New-EventLog -Source MyEventSource -LogName Application

La ayuda adicional dependerá en gran medida de los resultados que haya obtenido siguiendo estos pasos, así como de su código de script real.


Pocas observaciones importantes a las que me había enfrentado:

  1. En lugar de proporcionar solo powershell.exe , intente proporcionar la ruta PS completa C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe .

  2. El permiso es una preocupación más. El usuario a través del cual está ejecutando la tarea puede no tener el permiso para ejecutarlo.

  3. Política de ejecución: asegúrese de -ExecutionPolicy Bypass política de ejecución utilizando -ExecutionPolicy Bypass .

  4. Asegúrese de ejecutar la tarea con los más altos privilegios .

  5. Finalmente, a través del análisis de registros.