Búsqueda de sitios web

Cómo programar un script de PowerShell mediante el Programador de tareas


El script de PowerShell reduce la realización manual de tareas repetitivas. Si ejecuta scripts con frecuencia en momentos predefinidos o intervalos de tiempo específicos, es posible que esté cansado de ejecutar scripts repetidamente. Luego, puede utilizar el Programador de tareas de Windows para automatizar la ejecución de scripts. Le ahorrará tiempo y esfuerzo al ejecutar el script diariamente/semanalmente. Veamos cómo programar un script de PowerShell a través del Programador de tareas.

Se puede hacer de dos maneras.

1.Programe el script de PowerShell mediante la GUI del Programador de tareas

2.Programe el script de PowerShell desde el Programador de tareas usando PowerShell

Método 1: programar secuencias de comandos de PowerShell mediante el Programador de tareas

Abra el Programador de tareas (se puede encontrar en las 'Herramientas administrativas' o presionando 'Windows+R' para abrir ejecutar y luego escriba "taskschd.msc").

Para ejecutar una secuencia de comandos 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 con qué propósito se creó 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 se debe ejecutar una tarea. Se puede hacer seleccionando un botón de opción denominado "Ejecutar si el usuario no ha iniciado sesión". Si se selecciona este botón de opción, 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 solo cuando el usuario haya iniciado sesión'.
  • Cuando se selecciona 'Ejecutar si el usuario ha iniciado sesión o no', es posible que se le solicite que proporcione las credenciales de la cuenta, independientemente de si selecciona la casilla de verificación 'No almacenar contraseña. fuerte>' o no. Si la cuenta no inicia sesión 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 privilegios más altos".

3. Cambie a la pestaña Activador y haga clic en el botón Nuevo. Aquí puede establecer condiciones que activen una tarea.

  • Puede especificar cuándo iniciar la tarea. Por ejemplo, puede ejecutarlo según una programación, al inicio, al iniciar sesión o cada vez que ocurra un evento en particular seleccionando el menú desplegable "Comenzar la tarea".

  • Puede configurar si desea ejecutar esta tarea una vez, diariamente, semanalmente o mensualmente según su escenario.
  • En la "Configuración avanzada", puede optar por retrasar la tarea, repetirla o detenerla si se ejecuta por más tiempo que el período de tiempo y la fecha de vencimiento especificados.

    • Retrasar la tarea hasta: esto agrega un retraso aleatorio, por lo que la tarea no se iniciará en la hora exacta del día.
    • Repetir tarea cada: muestra la cantidad de veces que se debe ejecutar una tarea después de que se activa un disparador.

      • Repetir tarea cada - Intervalo de tiempo entre cada repetición de tarea
      • Por una duración de: ¿Cuánto tiempo debe continuar repitiéndose una tarea?
    • Detenga la tarea si se ejecuta por más tiempo: Si la tarea se ejecuta por más tiempo del esperado o nunca se cierra, la tarea se detendrá automáticamente si alcanza el límite de tiempo mencionado.
    • Caducar: después del período de tiempo especificado, la programación no se activará.

4. Luego 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 de forma predeterminada. Puede cambiarlo si es necesario.
  • Usando Examinar, seleccione el campo de programa/script. Para programar un script, debemos 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 una secuencia de comandos que exporte el informe de estado de MFA de los usuarios de Office 365.
c:\GetMFAStatus.ps1

Si la ruta contiene algún espacio en blanco, debe estar 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.

Finalmente, haga clic en Aceptar para crear un script programado.

El script programado se ejecutará como se esperaba de acuerdo con su programación sin ningún problema. Si desea verificar la ejecución del script, puede hacer clic en Ejecutar haciendo clic derecho en el nombre de la tarea.

Automatizar secuencias de comandos de PowerShell desde el Programador de tareas con parámetros

Si desea programar el script de PowerShell con parámetros, utilice el siguiente formato.

Script path -Param 1 Value1 -Param2 “Value 2”

Por ejemplo, voy a automatizar uno de nuestros scripts de PowerShell: Exportar informe de estado de MFA de usuarios de Office 365.

Durante la programación, puede pasar explícitamente la credencial como parámetros como se muestra a continuación:

C:\GetMFAStatus.ps1 -UserName "XXX XX" -Password ****

Si el valor del parámetro tiene espacios en blanco, los valores deben estar entre comillas.

Nota: Si desea una alternativa más segura a pasar contraseñas como texto sin formato, considere usar certificados. Los administradores pueden crear fácilmente certificados autofirmados para fines internos, eliminando la necesidad de costosos certificados de CA de terceros.

Si desea pasar un parámetro de cambio, puede utilizar la siguiente sintaxis.

 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 cambio.

Para obtener más scripts de PowerShell relacionados con Office 365, puede consultar el blog O365Reports.com.

Método 2: programar secuencias de comandos de PowerShell desde el Programador de tareas mediante PowerShell

En lugar de GUI, puede usar cmdlets de PowerShell para crear tareas programadas que automaticen el script de PowerShell. Implica seguir los pasos,

1.Definir tiempo para el programador

2.Establecer acciones a realizar durante la ejecución.

3.Guardar programador

Definir tiempo para el programador:

New-SchdeuledTaskTrigger crea un objeto desencadenante de tarea programada. Con este cmdlet, puede especificar la hora de inicio de una tarea o iniciar una tarea varias veces al día o a la semana.

 $Time=New-ScheduledTaskTrigger -At 4.00PM -Once

Arriba cmd crea un desencadenador de tarea programada que comienza a las 4 p.m. y se ejecuta una vez.

   $Time=New-ScheduledTaskTrigger -At 4.00PM -Daily -DaysInterval 2

El cmd anterior crea un activador de tarea programada que comienza cada 2 días a las 4 p.m.

Establecer acciones a realizar durante la ejecución:

New-SchdeuledTaskAction representa acciones que se ejecutaron cuando el Programador de tareas ejecuta la tarea. Una tarea puede tener una sola acción o un máximo de 32 acciones. Cuando especificas varias acciones, el Programador de tareas ejecuta una tarea de forma secuencial.

 $Action=New-ScheduledTaskAction -Execute PowerShell.exe -WorkingDirectory C:/Scripts -Argument “C:\Scripts\MFAStatus.ps1 -UserName XXXX -Password YYYY”

Este comando abre un PowerShell y cambia el directorio a C:/Scripts y luego invoca el script MFAStatus.ps1.

Guardar programador:

Register-ScheduledTask guarda la tarea programada en una computadora local.

 Register-ScheduledTask -TaskName "Schedule MFA Status Report" -Trigger $Time -Action $Action -RunLevel Highest

El cmd anterior guarda una tarea programada con el nombre "Programar informe de estado de MFA" en la carpeta raíz. La tarea guardada utiliza la acción creada previamente y los valores de activación especificados por las variables $Action y $Time.

Casos de uso:

Con el Programador de tareas, puede programar un script de PowerShell para que se ejecute periódicamente. Para que no necesite ejecutar manualmente un script diariamente/semanalmente/mensualmente. Hay más scripts disponibles en Internet que son compatibles con el programador (las credenciales se pueden pasar como parámetro en lugar de guardarlas dentro del script). He dado algunos ejemplos aquí.

  • Realice un seguimiento del historial de inicio de sesión de los usuarios de Office 365: mantenga 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 hora del último inicio de sesión de los usuarios de Office 365
  • Programar informe de permisos de buzón de Office 365
  • Programar informe de licencia de usuarios de Office 365
  • Programar secuencia de comandos de PowerShell de pertenencia al grupo de distribución
  • Programar secuencia de comandos de PowerShell de membresía de grupo de distribución dinámica
  • Informe periódico del último informe de actividad de los usuarios de Office 365
  • Programar el informe de PowerShell del historial de inicio de sesión de los usuarios de Office 365
  • Exportar periódicamente el informe de permisos del buzón compartido
  • Programar informe de acceso al buzón de correo de no propietarios
  • Informe de caducidad de contraseña de usuarios de Office 365

En este blog, hemos visto cómo automatizar un script de PowerShell usando el Programador de tareas. ¿Cuál es su enfoque preferido cuando se trata de programación: GUI o PowerShell? Infórmenos en la sección para comentarios.

Artículos relacionados