PowerShell Polaris
PowerShell Polaris es un framework web, multi plataforma, que se ejecuta sobre PowerShell Core 6. Antes de seguir con los detalles de Polaris, quiero recalcar que un web framework es:
Es un entorno de trabajo diseñado para apoyar el desarrollo de aplicaciones web, incluyendo servicios y APIs.
O sea que vamos a tener a partir de nuestro querido PowerShell un web server reducido, pero que nos va a permitir hacer cosas muy divertidas.
Instalación
La instalación de PowerShell Polaris es bastante sencilla, simplemente hay cumplir con 2 requerimientos:
- PowerShell Core 6
- .NET Standard 2.0 SDK
- Git (solo es necesario para clonar el repositorio, de lo contrario descargar el repositorio como .zip)
Y los pasos a seguir son:
Posteriormente ejecutar para finalizar la instalación:
Finalmente luego del arduo trabajo tenemos Polaris instalado en el equipo!
Primeros pasos
Al momento de comenzar a utilizar este framework no comprendía realmente el alcance del proyecto, por ello es que quiero mostrarles un ejemplo de uso para que puedan entenderlo mejor y sacarle provecho.
Lo primero que vamos a hacer es ver los cmdlets que vienen en el módulo ejecutando:
El primer cmdlet que vamos a utilizar para el ejemplo es New-WebRoute y nos permite definir una ruta HTTP en la que nuestro webserver va a escuchar. Simplemente para refrescar la memoria, gracias al protocolo HTTP podemos comunicarnos utilizando el esquema request-response en donde existen varios métodos de petición (GET, POST, PUT, etc.) para realizar acciones sobre el servidor.
Como parte del ejemplo, nos resta comentar que comando tenemos para iniciar el servidor. Para ello vamos a utilizar Start-Polaris. A modo de comentario vale la pena aclarar que el puerto por defecto del servidor es el 8080. En caso de querer definir un puerto diferente, debemos utilizar el parámetro Port.
Así que vamos a crear el “Hola Mundo!” en nuestro flamante servidor de la siguiente manera:
Para comprobar lo que realizamos, accedemos desde un navegador a la siguiente dirección: http://localhost:8081/helloworld y vamos a poder ver lo siguiente:
En caso de querer finalizar el servidor, debemos ejecutar:
Un ejemplo más funcional…
Ahora vamos a ver un ejemplo un poco más divertido, que nos demuestra el potencial de este proyecto. Al ser un webserver montado sobre PowerShell, tenemos a disposición para utilizar comandos que impacten sobre el resultado de la consulta (por ejemplo un GET), por lo que cada vez que realicemos la consulta obtendremos un valor actualizado.
La demostración más sencilla que se me ocurrió es consultar la hora, ya que es un valor que va cambiando constantemente. Así que vamos a construir lo siguiente:
Posteriormente iniciamos la instancia:
Y luego consultamos el resultado, ya sea desde la web (accediendo a la URL con el puerto y la ruta) o utilizando el cmdlet Invoke-RestMethod, de la siguiente manera:
En donde vamos a obtener resultados actualizados, en función de lo definido en la ruta.
Happy scripting!
Comments