Cómo optimizar tareas con la automatización de scripts de PowerShell
PowerShell es una herramienta muy potente para controlar procesos, automatizar tareas y demás en equipos Windows. Sinceramente, si intentas ejecutar scripts automáticamente, ya sea para copias de seguridad, actualizaciones o simplemente para mantenimiento rutinario, PowerShell puede hacerlo. Pero lo complicado es que Windows cuenta con una medida de seguridad llamada política de ejecución, que actúa como un guardián, impidiendo que se ejecuten archivos sin firmar o scripts de internet a menos que le indiques lo contrario. Esto puede ser un fastidio, sobre todo si solo intentas automatizar sin tener que hacer clic constantemente en “sí” o cambiar la configuración manualmente cada vez.
Así que, la cuestión es la siguiente: primero debes reducir la política de ejecución y luego configurar la programación. De lo contrario, tus scripts simplemente no se ejecutarán o se bloquearán, lo cual es muy frustrante. Además, hay un par de maneras de automatizar estos scripts: usando la interfaz gráfica del Programador de Tareas para quienes no tienen conocimientos técnicos, o el propio PowerShell si te sientes cómodo con los cmdlets. En cualquier caso, estos pasos te ayudarán a ejecutar todo automáticamente sin problemas (o al menos a simplificarlo).Solo ten en cuenta que, en algunas configuraciones, podrías necesitar derechos de administrador o permisos adicionales, según tus políticas de seguridad.
¿Cómo automatizar scripts de PowerShell?
Primero corrija la política de ejecución para permitir que se ejecuten los scripts
Esta configuración es la que bloquea la ejecución de scripts en la mayoría de los casos. Es un poco extraño, pero si la política de ejecución está configurada como “Restringida” (que suele ser la predeterminada), PowerShell no ejecutará scripts sin firmar. Por lo tanto, debe reducir la seguridad de forma controlada, idealmente solo para su usuario. Para ello, abra PowerShell con permisos de administrador (busque PowerShell, haga clic con el botón derecho y seleccione ” Ejecutar como administrador” ) e introduzca este comando:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Esto le permite ejecutar scripts firmados o creados localmente. En algunos equipos, recibirá un mensaje preguntándole si está seguro de cambiar la política; simplemente responda “Sí”.Si sus scripts provienen de internet o de fuentes no confiables, deberá configurarlo como Unrestricted. Use este comando:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Precaución, porque, claro, Windows tiene que complicarlo más de lo necesario. Solo tenga en cuenta que esta configuración Unrestrictedpermitirá la ejecución de todos los scripts, lo que puede suponer un riesgo de seguridad si no tiene cuidado.
Método 1: Usar el Programador de tareas
Esta es la opción más sencilla para la mayoría, especialmente si solo quieres hacer clic y olvidarte. Es muy fácil, no requiere scripts. Abre “Ejecutar con” Win + Ry escribe ” taschd.msc”. Esta es tu puerta de entrada al Programador de tareas. Haz clic derecho en ” Biblioteca del Programador de tareas” y selecciona “Crear tarea básica” o “Crear tarea” para ver más opciones.
- Nombre la tarea y descríbala brevemente (como “Ejecutar script de PowerShell automáticamente”).En la pestaña General, configúrela para que se ejecute con o sin sesión iniciada, si es necesario. A veces, deberá seleccionar ” Ejecutar con privilegios máximos” si el script requiere derechos de administrador (lo cual suele ocurrir).
- Configura el disparador: cuándo quieres que se ejecute. Diariamente, al iniciar sesión, al iniciar sesión…lo que prefieras. Haz clic en “Nuevo”, elige tu horario y pulsa “Aceptar”.
- A continuación, vaya a la pestaña Acciones, haga clic en Nuevo y seleccione Iniciar un programa. En el cuadro Programa/script, escriba
powershelly, en Agregar argumentos, escriba-File "full\path\to\your\script.ps1". Por ejemplo:-File "D:\Scripts\backup.ps1". Asegúrese de que la ruta y el nombre del archivo sean correctos; de lo contrario, no se ejecutará. - Ajuste otras configuraciones, como las condiciones o la configuración, si es necesario, y luego haga clic en Aceptar. Listo.
Eso es prácticamente todo: esta configuración ejecutará tu script a intervalos programados o con activadores específicos. Con esta configuración, no tendrás que ejecutarlo manualmente ni olvidarlo, solo automatizarlo.
Método 2: Automatizar directamente a través de PowerShell
Si te gusta crear scripts y quieres hacerlo todo desde PowerShell, este método es ideal. Es un poco más complejo, pero más flexible y repetible. Primero, necesitas crear un objeto disparador:
$Trigger = New-ScheduledTaskTrigger -Once -At 4am
Esto configurará la tarea para que se ejecute una vez a las 4:00 a.m. Cambie -Oncea -Dailyo -AtStartuppara diferentes activadores. Por ejemplo, una ejecución diaria cada 3 días:
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 9am
A continuación, define la acción: qué se ejecuta cuando se activa el disparador. Ahí es donde New-ScheduledTaskActionentra en juego:
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"`"
No olvides reemplazar `
$User = "YourDomain\YourUser"
Finalmente, registre la tarea con Register-ScheduledTask. Un ejemplo:
Register-ScheduledTask -TaskName "My PowerShell Auto" -Trigger $Trigger -User $User -Action $Action
De esta forma, puedes automatizar todo desde PowerShell, lo cual es muy útil si personalizas mucho o automatizas scripts de configuración. Un aviso: es posible que necesites permisos de administrador para algunos de estos comandos, especialmente si creas tareas que se ejecutan con privilegios elevados.
En una configuración, todo falló la primera vez, probablemente por seguridad o permisos. Tras reiniciar o ejecutar PowerShell como administrador, funcionó correctamente. A veces, hay que experimentar con los permisos o políticas de usuario para que funcione correctamente.
Con todo esto en marcha, es bastante sencillo ejecutar tus scripts de PowerShell según lo programado, ya sea a diario, al inicio o al iniciar sesión, sin necesidad de clics adicionales. Solo un poco de trabajo preliminar y luego todo irá viento en popa.