Saltar al contenido

El script de PowerShell no se ejecutará como una tarea programada de Windows

Comprende el código bien antes de aplicarlo a tu proyecto si ttienes algo que aportar puedes decirlo en los comentarios.

Solución:

Si el problema que tiene es con la política de ejecución, también puede establecer la política de ejecución de una invocación específica de PowerShell. Esto es lo que suelo hacer cuando ejecuto PowerShell a través de una tarea programada:

powershell.exe -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \pathtoscript.ps1

¿Por qué?

-Sin perfil

Esto garantiza que no confíe en nada en el perfil de PowerShell del usuario y evita la sobrecarga de ejecutar ese código adicional.

-Sin logo

Esto en su mayoría no importa; tal vez lo haga si está capturando el resultado de su secuencia de comandos. Sobre todo me hace sentir mejor.

-No interactivo

Garantiza que su tarea no esperará indefinidamente si algo en su secuencia de comandos le pregunta al usuario de forma inesperada. Con este cambio, la secuencia de comandos se cerrará en su lugar; al menos tendrás un código de error en lugar de un script colgado.

-Omisión de política de ejecución

Puedes usar Unrestricted aquí o cualquier política de ejecución que desee. Este es probablemente el que más necesitas..

Por qué prefiero configurar la política de ejecución de esta manera:

Porque no quiero que la tarea dependa de una configuración global no predeterminada que pueda tener otras razones para cambiar en el futuro. Si algún otro proceso depende de una política de ejecución diferente, entonces no está reñido con su tarea de esta manera.

Además, siempre es bueno no tener que cambiar los valores predeterminados. Menos para recordar/documentar/probar.

Prima

Consulte la respuesta de JohnLBevan para conocer algunas causas adicionales de 0x1 resultar en una tarea programada.

Hay varias causas posibles para que un script de PowerShell invocado por el programador de tareas se complete con código 0x1:

  • La política de ejecución no permite que se ejecute el script. Consulte la excelente respuesta de Briantist para obtener detalles sobre esto.
  • La tarea no tiene la Run with highest privileges bandera (casilla de verificación en la pestaña General de la tarea) habilitada.*
  • Los parámetros se pasan al script de forma incorrecta. Si se utiliza un enfoque como -File ".MyScript.ps1" -Parameter1 'Demo'en su lugar intente: -Command "& .MyScript.ps1 -Parameter1 'Demo'"

*Como señala Ben en los comentarios, Run with highest privileges no tiene que estar habilitado / depende si el script requiere derechos de administrador (por ejemplo, si algunos comandos como Set-ExecutionPolicy o Stop-Process puede requerirlos). Si no está seguro, intente marcar la opción para ver si soluciona su problema; si no parece hacer una diferencia, déjelo sin marcar.

He hecho esto antes y tuve problemas similares. Casi siempre es la configuración de seguridad de PowerShell. Lo más obvio es que verificaría dos veces su política de ejecución (suponiendo que la haya configurado).

¿Con qué usuario se ejecuta la tarea? ¿Ese usuario ha ejecutado un script de PowerShell antes? Si no recuerdo mal, se le solicita a cada usuario que “permita” que se ejecuten los scripts de PowerShell (S/N), cuando ejecuta un script por primera vez (independientemente de la política de ejecución). Eso me ha mordido antes. Tratar:

  • iniciar sesión como ese usuario
  • comprobar la política de ejecución
  • inicie el script desde un indicador de PowerShell
  • responda a las indicaciones que siguen.

Después de la primera ejecución, no debería tener que preocuparse por eso nuevamente, y debería ejecutarse desde el programador de tareas sin problemas.

Dependiendo de la seguridad de su dominio, es posible que también deba establecer la política de ejecución de grupo. Aquí hay un artículo que detalla cómo hacerlo, así como un par de otras cosas para verificar: Seguridad de PowerShell.

Ten en cuenta dar difusión a esta división si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *