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:

git clone https://github.com/PowerShell/Polaris.git
cd Polaris/PolarisCore

Parte del proceso de instalaci贸n de PowerShell Polaris

Posteriormente ejecutar para finalizar la instalaci贸n:

dotnet restore
dotnet build
cd ..
Import-Module ./Polaris.psm1

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:

Get-Command -Module Polaris

Cmdlets de PowerShell Polaris

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 鈥淗ola Mundo!鈥 en nuestro flamante servidor de la siguiente manera:

#Primero definimos la ruta con el m茅todo
New-GetRoute -Path "/helloworld" -ScriptBlock {
    $response.Send('Hello World!');
}
#Iniciamos el server en el puerto 8081
$app = Start-Polaris -Port 8081

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:

Hello World en nuestro servidor!

En caso de querer finalizar el servidor, debemos ejecutar:

Stop-Polaris -ServerContext $app

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:

New-GetRoute -Path "/time" -ScriptBlock {
    $time = Get-Date -DisplayHint Time
    $response.Send("Que hora es?: $time");
}

Posteriormente iniciamos la instancia:

$app = Start-Polaris -Port 8088

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:

Invoke-RestMethod -Uri http://localhost:8088/time -Method GET

Invoke-RestMethod

En donde vamos a obtener resultados actualizados, en funci贸n de lo definido en la ruta.

Happy scripting!

Comments