Tengo una aplicación web que se ejecuta en Windows Server 2008 R2, que tiene una gran cantidad de tareas programadas que se encargan de todo el backend. Cuando realizo una implementación de software que toca la base de datos, necesito deshabilitar todas las tareas programadas. Actualmente tengo una larga lista de verificación que necesito revisar manualmente, deshabilitando cada tarea programada a medida que avanzo; seguramente este es un trabajo maduro para la automatización con Powershell.
Desafortunadamente, la documentación de Powershell parece ser bastante tímida sobre cómo deshabilita una tarea programada existente (y, por supuesto, vuelve a habilitarla una vez que la versión se haya completado con éxito). Puedo obtener una lista de tareas listas, en ejecución o deshabilitadas, pero ¿qué sigue?
fuente
at.exe
. (Ejemplo:AT 09:00 /every:SUNDAY shutdown.exe /r /f /d p:4:1 /c "Reboot via SchTask (AT Job)"
). El error que obtendrá es 0x80041327; La tarea tiene propiedades que no son compatibles con versiones anteriores de WindowsSi solo está tratando de detener TODAS las tareas, puede ser más fácil simplemente detener el servicio del Programador de tareas. El módulo ScheduledTasks no estará disponible hasta Windows Server 2012, por lo que administrar tareas no es tan sencillo como detener e iniciar un servicio:
Si eso no funciona para usted, schtasks.exe aún puede usarse desde PowerShell para administrar tareas individuales:
fuente
¿Es esto lo que estás buscando (Disable-ScheduledTask) ?
fuente
Incluso una mejor manera en la que no necesita especificar los nombres de las tareas:
fuente
¡Esto es perfecto! Funciona mejor que Get-ScheduledTask ya que estoy en un entorno mixto 2008/2012. Agregué algunas líneas para consultar AD e invocar este comando contra un grupo de computadoras. Mi objetivo era deshabilitar la tarea de abrir "Administrador del servidor" cada vez que un usuario inicia sesión. ¡Presto! todo se fue!
fuente
Mira esta función
Por ejemplo, puede deshabilitar todas las tareas en la carpeta "\ mysql" llamando a
Control-Tasks -FolderPath "\mysql" -Disable -Recursive
Estos fragmentos de código provienen de Cómo deshabilitar / habilitar la tarea programada en lote por PowerShell , puede descargar el archivo de muestra completo allí.
fuente
esto funcionó para mí
fuente