Tengo un par de scripts de PowerShell de Exchange 2010 que me gustaría ejecutar como Tareas programadas.
Si inicio PowerShell usando "Ejecutar como usuario diferente", puedo ejecutar los scripts y se ejecutan correctamente.
Si programo una tarea con ese mismo usuario, la tarea permanece en el estado Ejecutando para siempre.
¿Cómo puedo averiguar dónde se estanca la tarea?
Como referencia, así es como habilito las cosas de Exchange:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Y aquí están las formas en que he intentado ejecutar el script desde el Programador de tareas:
- powershell -command "& {. 'c: \ windows \ script.ps1'}"
- powershell -file 'c: \ windows \ script.ps1'
- archivo de PowerShell "c: \ windows \ script.ps1"
Todo con el mismo resultado. Grr ...
exchange
exchange-2010
powershell
scheduled-task
cuello largo
fuente
fuente
Register-ScheduledJob
nunca 'terminó' terminó una vez que cerré mi consola PowerShell e ISE.Respuestas:
Debe modificar su política de ejecución o especificarla
-ExecutionPolicy Bypass
como un parámetro de línea de comandos.fuente
No estoy seguro si así es como lo está haciendo, pero cuando estoy ejecutando scripts de PowerShell a través del programador de tareas, uso la acción "Iniciar un programa" y selecciono powershell y luego agrego los argumentos desde allí. Eso podría ser lo que estás haciendo aquí, pero no está claro. Aquí hay una captura de pantalla:
Por la política de ejecución TheCompWiz también podría ser un problema.
fuente
-command
Yo tuve el mismo problema. En mi caso, la solución fue especificar el directorio "inicio en" (mi script leería el contenido de un archivo que no encontraría porque no especifiqué la ruta completa al archivo).
fuente
Tuve el mismo problema y el comentario de "user279399" para usar el comando taskkill fue muy útil, solo necesitaba modificaciones. Aquí está mi solución al final de la sintaxis del argumento
Este comando mata solo la sesión de PowerShell que se ejecuta bajo esa cuenta de usuario. Es una buena práctica tener una cuenta de administrador de intercambio separada para ejecutar tareas programadas.
fuente
Intente agregar al final de su script [taskkill / f / im "powershell.exe"] esto matará todos los procesos "powershell.exe". No sé cómo matar el proceso actual de power-shell (equivalente a [cmd.exe / c]). Pero hará el truco.
fuente