En este tutorial hablaremos de cómo utilizar la consola de Powershell en Azure, tanto de Cloud Shell (en el portal de Azure) como de la configuración de la consola de Powershell en nuestra propia máquina.

Dejaremos otras opciones como las cuentas de automatización para otro post.

Pero antes de nada me presento, soy Javier Orejana, Arquitecto Cloud especializado en Azure y este es mi primer artículo como colaborador en Virtualiza desde Zero.

Espero que sea el primero de muchos.

Ah y si quieres puedes seguir este artículo en video.

 

Consola de Azure Powershell en el portal de Azure

Para acceder a la consola de powershell podemos cliclar en el «botón de Cloud Shell» superior o bien acceder a «shell.azure.com».

POWERSHELL EN LOCAL

Lo primero que quiero que veais es que la versión que tiene instala la consola del portal.

Esta consola siempre va a ser la última version publicada. No tendremos que preocuparnos de irla actualizando como tendríamos (o deberías hacer) con la consola local. Qué pereza…

POWERSHELL EN LOCAL

Del mismo modo que tenemos actualizada la versión de PowerShell. También tendremos instalados los últimos módulos.

POWERSHELL EN LOCAL

 

Consola de Azure Powershell en Local

Para trabajar en local necesitaremos tener:

  • Franework 4.7.2 como versión mínima

Fuente: https://docs.microsoft.com/es-es/powershell/azure/install-az-ps?view=azps-4.7.0

Descargar: https://docs.microsoft.com/en-us/dotnet/framework/install

  • Consola de PWS como mínimo 5.1

Para sistemas Windows 10 (versión 1607) la versión es 5.1 o superior. La tendremos sin problemas. En el 99% de los casos vamos a tener ya instalada esa versión.

La recomendación de Microsoft es usar siempre la última versión. Pero podemos funcionar con versiones viejas de la consola sin problema como vemos en el vídeo. El propio Windows 10 se actualiza mediante «actualizaciones de sistema operativo» de la versión 5.0 a la 5.1.  Ya os comento que no debería de preocuparos.

Si hacemos un «$psversiontable» en nuestra consola local. Un Windows 10 1804 vemos que cumple el requisito de PWS.

POWERSHELL EN LOCAL

 

Actualizar la Consola de Powershell

 

Lo primero será descargar el instalador.

https://github.com/PowerShell/PowerShell/releases

En el momento de escribir este artículo la última versión estable es la 7.0.3

https://github.com/PowerShell/PowerShell/releases/tag/v7.0.3

Podemos actualizar a PWS 7  descargando el paquete e instalándolo como cualquier otra App.

POWERSHELL EN LOCAL 05

Si lo abrimos. Veremos con un «$psversiontable» que la versión es superior a la que viene con el sistema operativo.

POWERSHELL EN LOCAL

 

Instalar los Módulos de Azure en Powershell

 

Como hemos visto. En el shell de Azure los módulos están instalados y actualizados a la última versión. En local nos tocará hacerlo a nosotros.

Abrimos una consola con privilegios de administrador y añadimos el siguiente comando.

Install-Module -Name Az

POWERSHELL EN LOCAL

Los módulos de PWS se cargan en el perfil de usuario. Estamos haciendo la instalación sólo para nosotros.

Si preferimos instalar el módulo para todos los usuarios que usen la máquina. Podemos ejecutar el cmdlet con el siguiente parámetro.

Install-Module -Name Az -AllowClobber -Scope AllUsers

Este comando empezará a descargar todos los paquetes que componen los diferentes módulos de Az.

POWERSHELL EN LOCAL

Para instalar los módulos. Necesitamos acceder a un repositorio externo. En este caso el de PSGallery . Por lo que necesitaremos acceso a internet.

Si vienes o has tocado Linux esto de descargar software desde repositorios te sonará  😉

Actualizar los Módulos de Azure en Powershell

 

Podemos crear una tarea programa que nos actualize los módulos de vez en cuando o bien acordarnos de hacerlo cada cierto tiempo.

Podemos hacerlos con:

Update-module az -f

O aprovechar para actulizar todos los módulos existentes. Los de Az y los otros que hayamos instalado para nuestro trabajo

update-module -f

Si no tenemos la consola o los módulos a última versión. Nos puede ocurrir que un script localizado en un repositorio nos funcione en cloud shell pero no desde local.

Si alguna vez encontramos una situación similar. Acuérdate de este post. Actualiza los módulos y si el error se mantiene la consola. De todos modos estate tranquilo que no es normal que te de error.

 

AzureRm vs Az modules

 

Y hablando de buscar script por internet. Toca hablar de AzureRM.

AzureRM es el sistema antiguo de cmdlets. Sí, antiguo… que esto corre que se las vuela.

Los módulos de AzureRM siguen vivos en la nube pero Microsoft nos recomienda usarlos. Si vemos que hemos descargado un script y nos indica que no se reconocen los cmdlest mira si está usando cmdlest de AzureRM.

Estos cmdlets pueden usarse. Podrías instalarte el módulo correspondiente. Pero lo preferible es migrar los scripts que tengas en AzureRM a los nuevos comandos Az.

El cmdlet  antigo sería:

New-AzureRmResourceGroup

(https://docs.microsoft.com/en-us/powershell/module/azurerm.resources/new-azurermresourcegroup?view=azurermps-6.13.0)

Y el moderno:

New-AzResourceGroup

(https://docs.microsoft.com/en-us/powershell/module/az.resources/new-azresourcegroup?view=azps-4.7.0)

Si usas un SO diferente al de Microsoft. Mira este detalle.

The AzureRM module is not supported for macOS or Linux. To use Azure PowerShell cmdlets on these platforms, Install the Az module.

Puede que necesitemos instalarlo por alguna compatibilidad en algún script antiguo que tenga nuestro cliente. Pero como es evidente, si nos encontramos con un script en AzireRM, lo recomendable es ponernos a picar código y pasarlo al nuevo formato. No os asustenis, como veis es eliminar una serie de caracteres.

Si necesitas instalar este módulo. Ejecuta el siguiente script.

Install-Module -Name AzureRM -AllowClobber

 

Importar el perfil de usuario de Azure a la consola de Powershell local

 

La consola de PWS tiene un perfil para el usuario que se loga. Eesto nos permite ejecutar una serie de «cmdlet» en el inicio de la consola de PWS.

Por ejemplo, podemos agregar la importación de los módulos en nuestro perfil

Agregamos el cmdlet Import-Module Az y listo.

POWERSHELL EN LOCAL

Lo malo de importar todos los módulos es que el arranque iniciar de PWS es bastante lento.

Una buena práctica podría instalar (o cargar) sólo los paquetes que emplees.

POWERSHELL EN LOCAL

 

Según actualicemos los módulos. Se nos quedará instalada la versión antigua (por temas de compatibilidad).

Si queremos verla usaremos el siguiente comando.

Get-InstallModule Az -AllVersions

POWERSHELL EN LOCAL

Si tenemos varias versiones. Podemos decirle a la consola de PWs que cargue una en concreto de la siguiente forma.

Import-Module -Name Az -RequiredVersion 3.6.1

Si necesitamos «hacer limpia». Podemos desinstalar los módulos. El problema es la dependencia que hay entre ellos. En la documentación de microsoft se nos ofrece una opción para poder eliminar versiones obsoletas sin volvernos locos.

https://docs.microsoft.com/en-us/powershell/azure/uninstall-az-ps?view=azps-4.7.0

Uninstall-AzModule -Name Az -Version 3.6.1

Por último para poder trabajar con Azure tenemos que logarnos.

Es posible que si tu empresa funciona con Azure AD o ADDS. El propio usuario de la máquina te «autologue» en el portal.  Si no, en el vídeo vimos el comando a usar:

Connect-AzAccount

Una vez logados ya podremos trabajar contra los recursos de Azure como con el Shell del portal.

 

Posible Error: Use multiple repositories with PowerShellGet

 

Si te gusta cacharrear y has añadido varios repositorios. Por ejemplo para cargar software usando Chocolatey- Puede que tengas varios repositorios indexados.

Puedes usar el parámetro «-Repository» para indicar que buscas el módulo de Az en este repositorio. Si no has toqueteado, te irá a este repositorio por defecto.

Install-Module -Name Az -Repository PSGallery -AllowClobber -Force

 

Espero que poco a poco vayas perdiendo el miedo a toquetear en Azure con Powershell. Que el portal está muy bien pero se tarda menos con script.

Y si quieres saber como certificarte en Azure, te dejo esta megaguía:

Espero que te haya servidor este tutorial para utilizar la consola local de Powershell en Azure.

Compartir
Administrador de IT con 15 años de experiencia que decidió cambiar su zona de confort en un aburrido trabajo para ir al mundo Cloud, sobretodo Azure. Me he formado como Administrador, Arquitecto e Ingeniero de Seguridad en Azure. Cada día aprendo más de este trabajo y acabo mi jornada encantado con él. Microsoft Certified: Azure Solutions Architect Expert, Azure Security Engineer Associate y Administrator Associate. MCSA: Windows Server 2016 & MCSE: Core Infrastructure. AWS Certified Solutions Architect. Microsoft 365 Certified: Security Administrator Associate & Modern Desktop Administrator.