Pide tu presupuesto ya!

PowerShell 101: Importación de módulos

¿Alguna vez ejecutó un comando de PowerShell y recibió el temido mensaje de error “El término no se reconoce como el nombre de un cmdlet”? Aquí está el truco: el problema podría ser tan simple como un módulo faltante o no importado. Incluso en las versiones modernas de PowerShell, comprender cómo funcionan los módulos es clave para diagnosticar y solucionar estos problemas.

¿La buena noticia? Esta guía cubre todo, desde verificar qué módulos de PowerShell se importan actualmente hasta dominar cómo importarlos, eliminarlos y volver a importarlos. Al final, adquirirá habilidades para administrar sin problemas los módulos de PowerShell, ya sea solucionando errores inesperados o trabajando en módulos personalizados.

¡Sumérgete y deja que los módulos de PowerShell te ayuden a optimizar tu flujo de trabajo con confianza!

Comprobación de módulos importados

Los comandos de PowerShell pueden fallar con mensajes de error crípticos cuando los módulos no se cargan correctamente. Por ejemplo, intentar ejecutar Get-ADUser sin importar primero el módulo ActiveDirectory generará un error de “comando no encontrado”. De manera similar, intentar utilizar comandos de Azure requiere que el módulo Az esté presente en su sesión.

PowerShell debe importar el módulo relevante para garantizar que los comandos funcionen como se espera y que sus comandos estén disponibles.

Para ver los módulos importados actualmente, utilice:

Get-Module

Cuando ejecuta Get-Module, verá un resultado similar a este:

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content, Checkpoint-Computer...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type, Clear-Variable...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler, Get-PSReadLineOption...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare, Remove-SmbShare...}

Esto muestra una lista de todos los módulos actualmente cargados en su sesión de PowerShell, mostrando su tipo (Manifiesto, Script o Binario), número de versión, nombre del módulo y un resumen de los comandos que proporcionan. La columna ExportedCommands muestra qué cmdlets están disponibles en cada módulo.

A continuación, examine los comandos de un módulo que puede importar:

Get-Module -Name SmbShare -ListAvailable | Select exportedcommands

Cuando ejecute este comando, verá un resultado que enumera todos los comandos disponibles en el módulo SmbShare. Por ejemplo:

ExportedCommands
----------------
{Get-SmbShare, New-SmbShare, Remove-SmbShare, Set-SmbShare, Get-SmbShareAccess, 
Grant-SmbShareAccess, Block-SmbShareAccess, Revoke-SmbShareAccess, Get-SmbMapping}

Este resultado muestra todos los cmdlets que puede usar desde el módulo SmbShare. Cada comando tiene un propósito específico para administrar recursos compartidos de SMB:

  • Obtener-SmbShare: enumera todos los recursos compartidos de SMB en el sistema.
  • Nuevo-SmbShare: Crea un nuevo recurso compartido SMB
  • Quitar-SmbShare: elimina un recurso compartido SMB existente
  • Conjunto-SmbShare: modifica las propiedades de un recurso compartido existente

Comprender qué comandos están disponibles le ayudará a elegir la herramienta adecuada para su tarea. Puede utilizar comandos similares para explorar las capacidades de otros módulos.

Importar módulos automáticamente

Para ver cómo PowerShell maneja los módulos dinámicamente, aquí hay un ejemplo que muestra la carga dinámica del módulo:

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}

PS> Get-SmbShare

PS> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   7.0.0.0    Microsoft.PowerShell.Management    {Add-Computer, Add-Content...}
Manifest   7.0.0.0    Microsoft.PowerShell.Utility       {Add-Member, Add-Type...}
Script     2.0.0      PSReadline                         {Get-PSReadLineKeyHandler...}
Binary     1.0.0.1    SmbShare                          {Get-SmbShare, Set-SmbShare...}

Como se muestra arriba, cuando ejecuta Get-SmbShare, PowerShell importa automáticamente el módulo SmbShare. Puede ver que este módulo aparece en la lista después de ejecutar el comando.

Eliminación y reimportación de módulos

Es posible que necesite borrar un módulo de la memoria, como cuando prueba nuevas configuraciones o resuelve conflictos. Si es así, no te preocupes; PowerShell le permite eliminar un módulo sin desinstalarlo, lo que le permite restablecer o actualizar la sesión según sea necesario.

Para eliminar un módulo de la memoria:

Remove-Module -Name SmbShare

El Remove-Module El cmdlet borra el módulo de la memoria pero no lo desinstala de su sistema. Si bien eliminar módulos es poco común en el uso diario, es útil para escenarios específicos.

Para volver a importar manualmente el módulo:

Import-Module -Name SmbShare

La importación manual puede resultar útil a la hora de solucionar problemas o trabajar en entornos personalizados.

Reimportar módulos después de los cambios

Cuando trabaje en un módulo en desarrollo, puede encontrar situaciones en las que los cambios que realice no surtan efecto de inmediato. Es posible que aún se carguen datos o configuraciones antiguas en el módulo, lo que provoca este comportamiento.

Volver a importar el módulo garantiza que PowerShell utilice la última versión. Si modifica un módulo que está desarrollando, debe volver a importarlo.

Podrías usar ambos Remove-Module y Import-Module o simplificar el proceso con el Force parámetro:

Import-Module -Name SmbShare -Force

El Force El parámetro descarga y recarga el módulo en un solo paso, lo que lo hace ideal para flujos de trabajo de desarrollo y prueba.

Conclusión

En esta guía, aprendió cómo administrar módulos de PowerShell: verificar las importaciones e importar, eliminar y volver a importar módulos. También exploró cómo PowerShell importa módulos dinámicamente y cómo controlar la carga para solucionar problemas o probar configuraciones personalizadas manualmente.

Ahora, aplique estas habilidades experimentando con módulos personalizados en sus scripts. Explore el desarrollo de módulos y utilice el Force parámetro para garantizar que los cambios surtan efecto.

¡Mejore su solución de problemas, desarrollo de scripts y flujo de trabajo general de PowerShell con los módulos de PowerShell!

Written by

Leave a comment