Por Rubén Zamora
Vamos a comenzar explicando una historia, la historia de María.
María es una persona risueña, y amante del sistema MacOS, que es el que utiliza para programar en su día a día, pero ha tenido que cambiar de colaborador y le han dado un nuevo ordenador que usa Windows.
Esto es un “problema” en cierto sentido porque trabajar con Power Shell, en la terminal de Windows, es como empezar de cero para María, ya que a ella le gusta instalar las cosas por gestores de paquetes como brew
, que era lo que usaba en MacOS.
Entonces, se pone a buscar información sobre cómo hacer un script en Windows(Power Shell), que le permita preparar su setup inicial de aplicaciones que utiliza para trabajar. Y se pone a ello y acaba creando el siguiente script, que ha decidido dejarlo en un gist
de GitHub para que en el ordenador Windows restablecido de fábrica, sólo tenga que abrir una terminal en modo administrador y ejecutar la siguiente línea de comando:
|
|
Y WUALÁ !! Se comienzan a ejecutar las aplicaciones auto-mágicamente y ésto, le ha reducido a María 2 días de instalación y configuración “de cosas” a 15 minutos.
Antes
Después
Video demostración de lo que pasa
Este script ha sido probado en Windows 11, pero debería poder correr con Windows 10 versión 2004 (build 19041 or higher).
Nombre | Descripción |
---|---|
scoop-tray | Herramienta que permite acceder a la aplicaciones instaladas mediante scoop desde la bandeja del sistema en Windows |
curl | Herramienta de línea de comandos para transferir datos |
busybox | Pequeña utilidad que incluye muchos comandos de Unix en un solo ejecutable |
fzf | Un buscador de archivos y texto para la línea de comandos |
vim | Editor de texto avanzado |
cacert | Base de datos de certificados raíz |
colortool | Herramienta para aplicar colores a la consola Windows |
sudo | Permite a los usuarios ejecutar comandos con privilegios de administrador |
gpg | Sistema de cifrado de correo electrónico y archivos |
spacesniffer | Analiza el uso del espacio de disco en una partición |
sysinternals | Conjunto de utilidades para la gestión del sistema |
pshazz | Permite automatizar tareas con PowerShell y personalizar la experiencia de línea de comandos |
mpv | Reproductor de video de código abierto con una interface de línea de comandos que permite reproducir videos y audio de diversos formatos |
Nombre | Descripción |
---|---|
Microsoft.PowerToys | Conjunto de herramientas de productividad para Windows |
PuTTY | Cliente SSH, Telnet y Rlogin para Windows |
WinRAR | Compresor y descompresor de archivos |
Slack | Aplicación de mensajería para equipos |
Zoom | Aplicación de videoconferencia y reuniones en línea |
JetBrains.Toolbox | Herramienta de productividad para programadores |
Bitwarden | Gestor de contraseñas y autenticación segura |
Malwarebytes | Software antivirus y anti-malware |
Greenshot | Herramienta para capturar pantallas y editar imágenes |
chrisant996.Clink | Complemento para el símbolo del sistema de Windows que mejora la línea de comandos. |
Nombre | Descripción |
---|---|
Google Chrome | |
Sidekick | |
Mozilla Firefox | |
Opera | |
Obsidian | Aplicación de notas con enfoque en la estructura y organización |
HWMonitor | Monitoreo del hardware |
BleachBit | Limpiador de sistema para Windows |
SumatraPDF | Visor de PDF de código abierto |
Spark | Cliente de correo electrónico para Mac y iOS |
OBS Studio | Software de transmisión y grabación de video |
DBeaver | Herramienta de gestión de bases de datos |
DiskGenius | Herramienta de gestión de disco |
AutoHotkey | Lenguaje de scripts para automatización de tareas |
RevoUninstaller | Desinstalador de software con opciones avanzadas |
Starship | Un intérprete de comandos avanzado para el terminal |
Nombre | Descripción |
---|---|
syspin | Para fijar las aplicaciones en la barra de tareas del escritorio |
Aquí voy a hacer un análisis un poco por encima de este script - powershell-setup.ps1
Aquí pondré una serie de bloques del script que me parecen interesantes analizar, para aprender un par de cosas si se quieren montar sus propios script en power-shell
|
|
Esta función verifica si un paquete está instalado, y si no lo está, lo instala. También imprime mensajes detallados usando la opción Write-Verbose
, para dar más información sobre el proceso de instalación.
|
|
Este bloque comprobaría si winget
está instalado y funcionando correctamente. Si winget está funcionando, el código escribirá “Okay !” en la consola. Si hay un error al ejecutar el comando winget
, porque sigue sin coger las configuraciones tras haberse instalado, el código mostrará un mensaje de error. Luego, esperará 5 segundos antes de reiniciar el ordenador. Después de reiniciar, se espera 10 segundos antes de continuar con la ejecución del script, para que dé tiempo al usuario de informarse de lo que va a pasar.
|
|
while
para evitar que se presione (ENTER) o entradas inválidas a ‘n’, aunque para este caso he preferido que considere todo un sí
a menos que se confirme lo contrario.
|
|
Este patrón de bloque, se repite varias veces en el código para hacer la instalación de las diferentes aplicaciones, tanto en WinGet, como en Chocolately o Scoop.
|
|
Entonces, con estos bloques de código tenemos la siguiente información:
Las funciones se construyen de la siguiente manera:
|
|
y se llaman así:
|
|
If
Las condiciones if se construyen de esta manera:
|
|
Ejemplos:
|
|
|
|
|
|
Comando en power shell | Descripción |
---|---|
Write-Host | Imprime un mensaje en la consola de PowerShell y es el comando más común para imprimir texto en PowerShell. |
Write-Output | Imprime un objeto o valor en la consola de PowerShell. |
Write-Verbose | Imprime un mensaje sólo si el modo verboso está activado. |
Write-Debug | Imprime un mensaje sólo si el modo de depuración está activado. |
Write-Warning | Imprime un mensaje de advertencia en la consola de PowerShell. |
Write-Error | Imprime un mensaje de error en la consola de PowerShell. |
Ejemplo:
|
|
while
y for
Un bucle while
se crea en PowerShell con la siguiente sintaxis:
|
|
Un bucle for
se crea en PowerShell con la siguiente sintaxis:
|
|
El bloque try
es donde se ejecutan los comandos que pueden fallar, y el bloque catch
es donde se especifican las acciones a realizar en caso de un error.
Ejemplo:
|
|
Start-Sleep
: detiene la ejecución del script por un número de segundos especificado.
|
|
Restart-Computer
: reinicia el equipo.
|
|
Get-Command
: devuelve un objeto que representa un comando específico, en este caso se busca una aplicación con el nombre especificado.
|
|
|
|
Out-GridView
: El usuario puede seleccionar uno o más objetos personalizados a través de esta ventana y pulsar (ENTER) para ejecutar el script.
|
|
Select-Object
: Se utiliza para seleccionar un subconjunto de propiedades de un objeto o una serie de objetos. Puede usarse para elegir las propiedades que deseas incluir en la salida, renombrar las propiedades existentes, calcular valores de nuevas propiedades basadas en propiedades existentes y reordenar las propiedades en la salida. Es una herramienta muy útil para manipular y personalizar la salida en PowerShell.
|
|
set-alias
: Creación de alias en la consola
|
|
¿Quieres más? te invitamos a suscribirte a nuestro boletín para avisarte cada vez que recopilemos contenido de calidad que compartir.
Si disfrutas leyendo nuestro blog, ¿imaginas lo divertido que sería trabajar con nosotros? ¿te gustaría?
Pero espera 🖐 que tenemos un conflicto interno. A nosotros las newsletter nos parecen 💩👎👹 Por eso hemos creado la LEAN LISTA, la primera lista zen, disfrutona y que suena a rock y reggaeton del sector de la programación. Todos hemos recibido newsletters por encima de nuestras posibilidades 😅 por eso este es el compromiso de la Lean Lista