Búsqueda de sitios web

Cómo automatizar scripts de PowerShell con el Programador de tareas


El Programador de tareas de Microsoft Windows puede ayudarlo a iniciar automáticamente un programa o script de PowerShell en un momento determinado o cuando se cumplen ciertas condiciones. También puedes programar el envío de correos electrónicos e incluso mostrar ciertos mensajes. En este blog, le mostraremos cómo ejecutar un script de PowerShell desde el Programador de tareas que alertará sobre cualquier instalación de software en una computadora local.

También crearemos tareas programadas utilizando scripts de PowerShell. Aprenderás cómo:

  • Crear tareas con el programador de tareas
  • Modificar o eliminar tareas programadas
  • Cree tareas programadas con scripts de PowerShell.

Crear tareas con el Programador de tareas

Abra el Programador de tareas presionando "Windows+R" y luego escribiendo "taskschd.msc" en la ventana que se abre. Luego siga los siguientes pasos:

1. Haga clic en "Crear una tarea" e ingrese un nombre y una descripción para la nueva tarea. Para ejecutar el programa con privilegios de administrador, marque la casilla "Ejecutar con los privilegios más altos". En nuestro ejemplo, asignaremos una cuenta de servicio para ejecutar la tarea y la ejecutaremos independientemente de si el usuario ha iniciado sesión.

2. Cambie a la pestaña Activadores y haga clic en el botón "Nuevo...". Aquí puede especificar las condiciones que desencadenan la ejecución de la tarea. Por ejemplo, puede ejecutarlo según lo programado, al iniciar sesión, en estado de inactividad, al inicio o cada vez que ocurra un evento en particular. Queremos que nuestra tarea se active con cualquier instalación de software nuevo, por lo que elegimos "En un evento" en el menú desplegable y seleccionamos "Aplicación" en la configuración de Registro. Deje el parámetro "Fuente" en blanco y establezca el ID de evento en "11707". Haga clic en "Aceptar" para guardar los cambios.

3. Navegue a la pestaña "Acciones" y haga clic en "Nuevo...". Aquí puede especificar las acciones que se ejecutarán siempre que se cumplan las condiciones de activación. Por ejemplo, puede enviar un correo electrónico o mostrar un mensaje. En nuestro caso, queremos iniciar un programa, por lo que debemos crear el script de PowerShell que queremos ejecutar y guardarlo con la extensión "ps1". Puedes encontrar el guión aquí; enviará una alerta con los detalles del evento sobre el software instalado.

Para programar el script de PowerShell, especifique los siguientes parámetros:

  • Acción: Iniciar un programa
  • Programscript: powershell
  • Agregar argumentos (opcional): -Archivo [Especifique aquí la ruta del archivo al script]

Haga clic en "Aceptar" para guardar los cambios.

4. La pestaña "Condiciones" le permite especificar las condiciones que, junto con el desencadenante, determinan si la tarea debe ejecutarse. En nuestro caso, deberíamos dejar la configuración predeterminada en esta pestaña.

5. También puede configurar parámetros adicionales para su tarea programada en la pestaña "Configuración". Sin embargo, para nuestro ejemplo, los dejaremos sin cambios.

6. Cuando la tarea esté completamente configurada, el sistema le pedirá la contraseña de la cuenta de servicio. Tenga en cuenta que esta cuenta debe tener el derecho "Iniciar sesión como trabajo por lotes". Ingrese la contraseña y haga clic en "Aceptar" para guardar la tarea.
7. Para que el Programador de tareas funcione correctamente, el servicio del Programador de trabajos debe estar configurado para iniciar Ejecutar “Services.msc”. En la lista de servicios, busque el Programador de tareas y haga doble clic en él. En la pestaña General, configure el tipo de inicio en "Automático" y haga clic en Aceptar para guardar el cambio.

Ahora, cada vez que se instale un nuevo software en su Microsoft Windows Server, se le notificará mediante un correo electrónico que detalla la hora de la instalación, el nombre del software y el ID de usuario (SID) de la persona que lo instaló.

Modificar o eliminar tareas programadas

Para modificar una tarea existente, haga clic derecho en ella en la lista, seleccione Propiedades, edite la configuración requerida y haga clic en Aceptar. Para eliminar una tarea programada, haga clic derecho en ella, seleccione Eliminar y confirme la acción.

Creación de tareas programadas con scripts de PowerShell

Ahora que sabe cómo crear una tarea usando el Programador de tareas, descubramos cómo crear una tarea programada usando PowerShell. Supongamos que queremos que nuestra tarea se inicie diariamente a las 10 a. m. y debe ejecutar el script de PowerShell que puede encontrar aquí, que monitoreará los cambios en la membresía del grupo en el sitio de Active Directory.

En Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), para crear un trabajo programado, debe utilizar el módulo TaskScheduler. Instale el módulo ejecutando el comando “Import-Module TaskScheduler” y use el siguiente script para crear una tarea que ejecutará el script de PowerShell denominado GroupMembershipChanges.ps1 diariamente a las 10 a.m. :

Import-Module TaskScheduler $task = New-Task
$task.Settings.Hidden = $true
Add-TaskAction -Task $task -Path C:Windowssystem32WindowsPowerShellv1.0powershell.exe –Arguments “-File C:ScriptsGroupMembershipChanges.ps1”
Add-TaskTrigger -Task $task -Daily -At “10:00”
Register-ScheduledJob –Name ”Monitor Group Management” -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 y superior) no incluye el módulo Programador de tareas, por lo que este script no funcionará. En cambio, PowerShell 3.0 y 4.0 introdujeron nuevos cmdlets para crear tareas programadas, New-ScheduledTaskTrigger y Register-ScheduledTask, que hacen que la creación de una tarea programada sea mucho más fácil y conveniente. Entonces, creemos una tarea que ejecutará nuestro script diariamente a las 10 a.m. usando la cuenta del sistema (SISTEMA). Esta tarea será realizada por una cuenta con privilegios elevados.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings
$User= "NT AUTHORITYSYSTEM" # Specify the account to run the script
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1" # Specify what program to run and with its parameters
Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Otras opciones de activación que podrían resultar útiles para crear nuevas tareas incluyen:

  • -AtStartup: activa la tarea al iniciar Windows.
  • -AtLogon: activa la tarea cuando el usuario inicia sesión.
  • -Once: activa la tarea una vez. Puede establecer un intervalo de repetición utilizando el parámetro -RepetitionInterval.
  • -Semanal: activa tu tarea una vez por semana.

Tenga en cuenta que, al utilizar estos cmdlets, no es posible activar la ejecución "en un evento" como lo hicimos con la herramienta Programador de tareas. Los scripts de PowerShell con activadores "en un evento" son mucho más complicados, por lo que esta es una desventaja real de usar PowerShell en lugar del Programador de tareas.

Conclusión

Como puede ver, es fácil crear tareas programadas utilizando el Programador de tareas o PowerShell. Pero recuerde que los cambios inadecuados en sus tareas programadas pueden provocar interrupciones en el servicio y degradar el rendimiento del servidor. Por lo tanto, es esencial realizar un seguimiento de todos los cambios en sus tareas programadas.

Artículos relacionados