El script de PowerShell reduce la realización manual de tareas repetitivas. Si usted está ejecutando con frecuencia las secuencias de comandos en momentos predefinidos o intervalos de tiempo especificados, usted puede estar cansado de la ejecución de secuencias de comandos repetidamente. Entonces, puede utilizar el Programador de tareas de Windows para automatizar la ejecución de scripts por usted. Le ahorrará tiempo y esfuerzo en la ejecución de scripts diariamente/semanalmente. Vamos a ver cómo programar la secuencia de comandos de PowerShell a través del Programador de tareas.
Se puede hacer de dos maneras.
1.Programar la secuencia de comandos de PowerShell utilizando la GUI del Programador de tareas
2.Programar el script de PowerShell desde el Programador de Tareas usando PowerShell
- Método 1: Programar el script de PowerShell usando el Programador de Tareas
- Automatizar la secuencia de comandos de PowerShell desde el Programador de tareas con parámetros
- Método 2: Programar el script de PowerShell desde el programador de tareas utilizando PowerShell
- Definir el tiempo para el programador:
- Set Actions to be Performed During Execution:
- Guardar Programador:
- Casos de uso:
Método 1: Programar el script de PowerShell usando el Programador de Tareas
Abrir el Programador de Tareas (se puede encontrar en las ‘Herramientas administrativas’ o pulsando ‘Windows+R’ para abrir ejecutar y luego escribir ‘taskschd.msc’.)
Para ejecutar un script desde el Programador de Tareas, siga estos pasos.
1.Abra el Programador de Tareas -> Biblioteca del Programador de Tareas -> Crear Tarea
2.En la pestaña General, puede establecer el nombre del programador y la descripción de la tarea, como por ejemplo para qué se ha creado la tarea.
Las opciones de seguridad disponibles se explican a continuación.
- Especifique el usuario en cuyo nombre se ejecutará la tarea.
- Puede especificar que una tarea debe ejecutarse . Se puede hacer seleccionando un botón de radio etiquetado como «Run Whether the user is logged on not». Si se selecciona este botón de radio, la tarea no se ejecutará de forma interactiva. Para hacer que una tarea se ejecute de forma interactiva, seleccione el botón de opción «Ejecutar sólo cuando el usuario ha iniciado la sesión».
- Cuando se selecciona el botón «Ejecutar si el usuario ha iniciado la sesión o no», es posible que se le pida que proporcione las credenciales de la cuenta, independientemente de si selecciona la casilla «No almacenar la contraseña» o no. Si la cuenta no está conectada durante la ejecución de la tarea, se utilizarán las credenciales guardadas.
- Si la tarea requiere privilegios elevados, seleccione la opción «Ejecutar con los máximos privilegios».
3.Cambie a la pestaña Disparador y haga clic en el botón Nuevo. Aquí, puede establecer las condiciones que desencadenan una tarea.
- Puede especificar cuándo iniciar la tarea. Por ejemplo, puede hacer que se ejecute en un horario, en el inicio, en el inicio de sesión o siempre que se produzca un evento particular seleccionando el menú desplegable «Comenzar la tarea».
- Puede configurar si desea ejecutar esta tarea una vez o diariamente o semanalmente o mensualmente según su escenario.
- En los «Ajustes avanzados», puede elegir retrasar la tarea, repetir la tarea, detener la tarea si se ejecuta más del período de tiempo especificado y la fecha de caducidad.
- Retrasar la tarea hasta – Esto añade un retraso aleatorio, por lo que la tarea no se iniciará en el momento exacto del día.
- Repetir la tarea cada – Muestra el número de veces que una tarea debe ejecutarse después de un disparador.
- Repetir tarea cada – Intervalo de tiempo entre cada repetición de la tarea
- Durante cuánto tiempo debe seguir repitiéndose una tarea
- Detener tarea si se ejecuta más de – Si la tarea se ejecuta más del tiempo previsto o no se abandona nunca, la tarea se detendrá automáticamente si alcanza el límite de tiempo mencionado.
- Expirar – Después del período de tiempo especificado, la programación no se activará.
4.A continuación, abra la siguiente pestaña «Acciones» y haga clic en el botón «Nuevo».
- En el menú desplegable Acción, «Iniciar un programa» está configurado por defecto. Puede cambiarlo si es necesario.
- Usando Browse, seleccione el campo de programa/script. Para programar un script, necesitamos seleccionar powershell.exe.
Puede encontrar powershell.exe en su carpeta system32\WindowsPowerShell\v1.0.
- En ‘Agregar argumentos’, el parámetro -File es el predeterminado asà que simplemente especifique la ruta del script. Por ejemplo, voy a programar un script que exporte el informe de estado de MFA de los usuarios de Office 365.
PowerShell
1
|
c:\GetMFAStatus.ps1
|
Si la ruta contiene algún espacio en blanco, debe ir entre comillas.
5.Una vez configurada, puede especificar condiciones para determinar si la tarea debe ejecutarse. La tarea no se ejecutará si alguna de las condiciones especificadas aquí no es verdadera.
6.En la pestaña Configuración, puede establecer configuraciones avanzadas adicionales para controlar la ejecución de la tarea.
Por último, haga clic en Aceptar para crear un script programado.
El script programado se ejecutará como se espera según su programación sin ningún problema. Si desea comprobar la ejecución de la secuencia de comandos, puede hacer clic en Ejecutar haciendo clic con el botón derecho en el nombre de la tarea.
Automatizar la secuencia de comandos de PowerShell desde el Programador de tareas con parámetros
Si desea programar la secuencia de comandos de PowerShell con parámetros, utilice el siguiente formato.      Â
PowerShell
1
|
Ruta del script -Param 1 Valor1 -Param2 «Valor 2»
|
Por ejemplo, Voy a automatizar uno de nuestros script de PowerShell: Exportar informe de estado de MFA de los usuarios de Office 365
Durante la programación, se puede pasar explícitamente la credencial como parámetros como se muestra a continuación:
PowerShell
1
|
C:\GetMFAStatus.ps1 -UserName «XXX XX» -Password ****
|
Si el valor del parámetro tiene espacio en blanco, los valores deben ir entre comillas.
Si desea pasar un parámetro de conmutación, puede utilizar la siguiente sintaxis.
PowerShell
1
|
 C:\GetMFAStatus.ps1 -EnabledOnly
|
El script anterior exporta el estado de MFA de los usuarios de Office 365 cuyo estado de MFA está habilitado. Aquí -EnabledOnly es un parámetro de conmutación.
Para más scripts de PowerShell relacionados con Office 365, puede consultar el blog O365Reports.com.
Método 2: Programar el script de PowerShell desde el programador de tareas utilizando PowerShell
En lugar de la interfaz gráfica de usuario, puede utilizar los cmdlets de PowerShell para crear una tarea de programación que automatice el script de PowerShell. Implica los siguientes pasos,
1.Definir el tiempo para el programador
2.Establecer las acciones a realizar durante la ejecución
3.Guardar el programador
Definir el tiempo para el programador:
New-SchdeuledTaskTrigger crea un objeto disparador de tareas programadas. Usando este cmdlet, puede especificar la hora de inicio de una tarea o el inicio de una tarea varias veces en una base diaria o semanal.
PowerShell
1
|
$Time=New-ScheduledTaskTrigger -At 4.00PM -Once
|
El cmd anterior crea un trigger de tarea programada que comienza a las 4PM y se ejecuta una vez.
PowerShell
1
|
  $Time=New-ScheduledTaskTrigger -At 4.00PM -Daily -DaysInterval 2
|
El cmd anterior crea un trigger de tarea programada que se inicia cada 2 días a las 4PM
Set Actions to be Performed During Execution:
New-SchdeuledTaskAction representan acciones que se ejecutan cuando el Programador de Tareas ejecuta la tarea. Una tarea puede tener una sola acción o un máximo de 32 acciones. Cuando se especifican varias acciones, el Programador de tareas ejecuta una tarea secuencialmente.  Â
Este comando abre un PowerShell y cambia el directorio a C:/Scripts y luego invoca el script MFAStatus.ps1.
Guardar Programador:
Registrar-Tarea Programada guarda la tarea programada en un equipo local.
PowerShell
1
|
Register-ScheduledTask -TaskName «Schedule MFA Status Report» -Trigger $Time -Action $Action -RunLevel Highest
|
El cmd anterior guarda una tarea programada con un nombre «Schedule MFA Status Report» en la carpeta raíz. La tarea guardada utiliza los valores de acción y activación precreados que se especifican en las variables $Action y $Time.
Casos de uso:
Usando el Programador de Tareas, puede programar una secuencia de comandos PowerShell para que se ejecute periódicamente. De esta forma, no es necesario ejecutar manualmente un script a diario/semanal/mensualmente. Hay más scripts disponibles en Internet que son amigables con el programador (las credenciales pueden ser pasadas como un parámetro en lugar de guardarlas dentro del script). He dado algunos ejemplos aquí.
- Registrar el historial de inicio de sesión de los usuarios de Office 365 – Mantener el registro de auditoría durante más de 90 días
- Informe periódico del estado de MFA de los usuarios de Office 365
- Programar el informe de la última hora de inicio de sesión de los usuarios de Office 365
- Programar el informe de permisos del buzón de correo de Office 365
- Programar el informe de licencias de los usuarios de Office 365
- Programar Script PowerShell de pertenencia a grupos de distribución
- Programar Script PowerShell de pertenencia a grupos de distribución dinámicos
- Informe periódico de la última actividad de los usuarios de Office 365
- Programar informe PowerShell del historial de acceso de los usuarios de Office 365
- Exportar periódicamente informe de permisos de buzones compartidos
- Programar informe de acceso a buzones nopropietario del buzón
- Informe de caducidad de la contraseña de los usuarios de Office 365
En este blog, hemos visto cómo automatizar un script de PowerShell utilizando el Programador de Tareas.¿Cuál es su enfoque preferido cuando se trata de la programación – GUI o PowerShell? Háganoslo saber en la sección de comentarios.