Cerrar
InicioAzureMicrosoft Azure: Ahorro de Costes en Azure Virtual Desktop

Microsoft Azure: Ahorro de Costes en Azure Virtual Desktop

Hoy voy a mostraros un pequeño script (mejorable) que nos va a permitir gestionar el apagado he iniciado de nuestros hosts de sesión, de forma sencilla. En otra ocasión había publicado otro artículo sobre esto mismo pero desde utilizando Webhooks y PowerShell: Microsoft Azure: Ahorro de Costes en WVD [Detener Equipos Sin Sesiones], pero hoy vamos a configurar un script que nos permite conocer las sesiones activas en los hosts de sesión de nuestros host pool.

La idea es la siguiente:

  • Si tenemos hosts de sesión sin sesiones activas, apagaremos dichos hosts de sesión
  • Si tenemos un hosts de sesión con un número de sesiones N, entonces iniciaremos un nuevo hosts de sesión

Esto nos permite siempre mantener un número de hosts de sesión óptimo en nuestro entorno, sin incurrir en costes innecesarios al tener hosts de sesión iniciados sin o con pocas sesiones activas. Al final todos sabemos que el coste se va en la cantidad de equipos iniciados que tengamos, por lo menos como valor referencial.

Para implementar esta solución, lo haremos con un runbook y un script de PowerShell, algo simple y que luego cada uno puede mejorar sin lugar a dudas (no es mi fuerte los scripts de PowerShell).

A continuación, aquí va la infografía para este artículo:

Lo primero que os voy a mostrar son las secciones del script que utilizado, son capturas de pantalla para que el código sea más legible (al final del artículo está el .ps1 para que lo descarguéis):

Aquí simplemente establecemos la conexión con Azure utilizando la cuenta de automatización:

Definimos las variables para el grupo de recurso donde tenemos nuestro host pool:

Ahora buscaremos los hosts de sesión que no tienen sesiones activas ($_.Session -EQ ‘0’ ) pero que si están iniciados ($_.Status -EQ ‘Available’), y luego por cada host de sesión que encontremos sin sesiones activas, utilizaremos la funciona .split para quedarnos únicamente con el nombre del host de sesión, porque por defecto nos devuelve  este valor como Name: hostpool-westeurope-remoteapp/nombre-equipo-0.dominio.com y nosotros para apagar el equipo necesitamos solo el nombre del equipo, de aquí que con la función .split lo podemos lograr y luego por cada host de sesión encontrado sin sesiones activas, pues los vamos apagando: Stop-AzVM -ResourceGroupName $ResourceGroup -Name $WVDArray[1] -force

Luego, lo que queremos es que si hay host de sesión con 13 o 14 sesiones activas, se inicie otro host de sesión para no quedarnos cortos con nuevas sesiones de usuarios. Más de lo mismo con la función .Split puesto que con la consulta Get-AzWvdSessionHost nos devuelve el valor Name con el mismo valor que antes.

Aquí os dejo el script para que lo podáis copiar/pegar y mejorar, que ya sé que tiene mucho margen de mejora y si es así, por favor, dejar un comentario en el blog con lo que habéis mejorado y así lo vemos todos: AzureVD-GestionVM.zip

Una vez que tenemos el script, básicamente desde la cuenta de automatización de Azure debemos publicarlo y configurar una programación para que se vaya ejecutando cada poco tiempo y vaya comprobando si hay sesiones activas o no para ir encendido o apagando host de sesión y siempre dar servicio a los usuarios y también a la economía de la empresa.

Insisto, el script tiene mucho margen de mejora, pero seguro que por lo menos os da alguna idea de muchas más cosas que podéis hacer. Una cosa importante antes de nada, para poder ejecutar estos cmdlets debéis añadir previamente a la cuenta de automatización el siguiente módulo (y sus dependencias):

Bueno, como siempre, ahora os toca probarlo a vosotros!!

Microsoft Teams Dire
Microsoft Endpoint M
NO HAY COMENTARIOS

Este sitio web utiliza cookies. Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra política de cookies. ACEPTAR

Aviso de cookies
Share This