Módulos de PowerShell: Guía para principiantes sobre cómo extender la funcionalidad

La automatización de edificios con PowerShell puede parecer abrumadora al principio, pero como cualquier gran empeño, se trata de tomarlo paso a paso. Imagina PowerShell como una colección de bloques de construcción, con módulos como la base que da vida a su funcionalidad.

En este artículo, descubrirás qué son los módulos de PowerShell, cómo encontrarlos y cómo usarlos para potenciar tus tareas de automatización. Desde la gestión de máquinas virtuales hasta la conexión con servicios en la nube o la automatización de Active Directory, los módulos lo hacen todo posible.

¡Sigue leyendo para desbloquear todo el potencial de PowerShell y abordar tus tareas con precisión!

Descubriendo Módulos de PowerShell Disponibles

Los módulos de PowerShell son bloques de construcción esenciales que amplían su funcionalidad. Pero no todos los módulos se cargan automáticamente en tu sesión: a menudo permanecen en tu sistema, esperando ser descubiertos.

Para explorar los módulos instalados en tu sistema, utiliza el comando Get-Module:

Get-Module

Puedes notar una lista corta de módulos. La razón es que Get-Module solo muestra módulos que ya han sido importados en tu sesión.

Para ver todos los módulos disponibles en tu sistema, incluidos aquellos que aún no están cargados, añade el parámetro -ListAvailable:

Get-Module -ListAvailable

Este comando lista todos los módulos disponibles en tu sistema, ya sea que estén cargados en memoria o no. PowerShell importa automáticamente los módulos a medida que usas comandos de ellos, por lo que generalmente no necesitas cargarlos manualmente.

Los módulos pueden ser de varios tipos: script, binario o manifiesto.

Para agrupar los módulos por tipo y facilitar su inspección, prueba esto:

gmo -ListAvailable | group ModuleType

Aquí, utilizas alias por conveniencia.

Por ejemplo, gmo es una abreviatura para Get-Module, y group es un alias para Group-Object. Los alias ahorran tiempo al ejecutar comandos en la consola.

Descubriendo versiones de módulos y detalles de comandos

Cada módulo tiene una versión que representa su conjunto de características o cambios a lo largo del tiempo. La versionado permite gestionar actualizaciones o revertir a una versión anterior si es necesario.

Los módulos también contienen comandos que son accesibles a través de la propiedad ExportedCommands.

Para ver los comandos en el módulo Microsoft.PowerShell.Management, ejecuta:

gmo Microsoft.PowerShell.Management | Select-ExpandProperty ExportedCommands

Este comando muestra una lista de comandos disponibles en el módulo.

Localizando directorios de módulos

Los módulos no funcionan mágicamente en PowerShell; viven en directorios específicos en tu sistema, y PowerShell necesita saber dónde encontrarlos.

Para mostrar las ubicaciones de los módulos de PowerShell disponibles:

gmo -list

Las ubicaciones comunes incluyen:

  • C:\Program Files\PowerShell\7\Modules
  • C:\Program Files\WindowsPowerShell\Modules
  • C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

Aún al ejecutar PowerShell Core, los módulos de los directorios de Windows PowerShell pueden seguir apareciendo porque PowerShell Core puede utilizarlos.

Los módulos tienen categorías dedicadas según su propiedad PSEdition, que indica compatibilidad:

  • Core – Diseñado para PowerShell Core.
  • Escritorio – Diseñado para Windows PowerShell.
  • Ambos – Compatible con ambas ediciones.

Gestión de la variable PSModulePath

PowerShell no busca automáticamente en todo el sistema los módulos, sino que se basa en rutas específicas definidas por la variable de entorno PSModulePath. Si un módulo no está en una de estas rutas, PowerShell no lo encontrará, incluso si el sistema/tú lo instalaste en otro lugar.

Para ver la variable de entorno PSModulePath:

$env:PSModulePath

La variable contiene una lista de directorios separados por punto y coma.

Para una lectura más fácil, divídela en un array:

$env:PSModulePath -split ';'

PowerShell busca módulos en:

  • Directorios a nivel de usuario (por ejemplo, la carpeta Documentos de tu perfil de usuario).
  • Directorios compartidos en Program Files.
  • Directorios a nivel de sistema, como C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules.

También puedes añadir directorios personalizados al camino de búsqueda:

$env:PSModulePath + ';C:\MyNewModulePath'
$env:PSModulePath

Este cambio se aplica a la sesión actual, indicando a PowerShell que busque módulos en la ruta especificada.

Conclusión

En este artículo, exploraste cómo descubrir módulos disponibles, ver sus versiones, inspeccionar sus comandos y localizar sus directorios de almacenamiento. También aprendiste a aprovechar la variable de entorno PSModulePath para personalizar dónde busca PowerShell los módulos.

Estas habilidades fundamentales te permiten desbloquear todo el potencial de PowerShell para tus tareas de automatización. Sigue poniendo este conocimiento en práctica. Comienza explorando los módulos que ya están disponibles en tu sistema e identificando aquellos que se adapten a tus necesidades actuales.

¡Con una comprensión más profunda de los módulos, estarás listo para abordar desafíos de automatización complejos con confianza y eficiencia!

Source:
https://adamtheautomator.com/powershell-modules-guide/