Búsqueda de sitios web

Importar un módulo de PowerShell


Una vez que haya instalado un módulo en un sistema, es probable que desee importarlo. La importación es el proceso que carga el módulo en la memoria activa, para que un usuario pueda acceder a ese módulo en su sesión de PowerShell. En PowerShell 2.0, puede importar un módulo de PowerShell recién instalado con una llamada al cmdlet Import-Module. En PowerShell 3.0, PowerShell puede importar implícitamente un módulo cuando un usuario llama a una de las funciones o cmdlets del módulo. Tenga en cuenta que ambas versiones suponen que instala su módulo en una ubicación donde PowerShell pueda encontrarlo; Para obtener más información, consulte Instalación de un módulo de PowerShell. Puede usar un manifiesto de módulo para restringir qué partes de su módulo se exportan y puede usar parámetros de la llamada Import-Module para restringir qué partes se importan.

Importación de un complemento (PowerShell 1.0)

Los módulos no existían en PowerShell 1.0: en cambio, había que registrarse y usar complementos. Sin embargo, no se recomienda utilizar esta tecnología en este momento, ya que los módulos generalmente son más fáciles de instalar e importar. Para obtener más información, consulte Cómo crear un complemento de Windows PowerShell.

Importación de un módulo con Import-Module (PowerShell 2.0)

PowerShell 2.0 utiliza el cmdlet Import-Module con el nombre apropiado para importar módulos. Cuando se ejecuta este cmdlet, Windows PowerShell busca el módulo especificado dentro de los directorios especificados en la variable PSModulePath. Cuando se encuentra el directorio especificado, Windows PowerShell busca archivos en el siguiente orden: archivos de manifiesto del módulo (.psd1), archivos de módulo de script (.psm1), archivos de módulo binario (.dll). Para obtener más información sobre cómo agregar directorios a la búsqueda, consulte about_PSModulePath. El siguiente código describe cómo importar un módulo:

Import-Module myModule

Suponiendo que myModule estuviera ubicado en PSModulePath, PowerShell cargaría myModule en la memoria activa. Si myModule no estaba ubicado en una ruta PSModulePath, aún podría decirle explícitamente a PowerShell dónde encontrarlo:

Import-Module -Name C:\myRandomDirectory\myModule -Verbose

También puede utilizar el parámetro -Verbose para identificar qué se exporta fuera del módulo y qué se importa a la memoria activa. Tanto las exportaciones como las importaciones restringen lo que está expuesto al usuario: la diferencia es quién controla la visibilidad. Básicamente, las exportaciones se controlan mediante un código dentro del módulo. Por el contrario, las importaciones están controladas por la llamada Import-Module. Para obtener más información, consulte Restringir miembros importados, a continuación.

Importación implícita de un módulo (PowerShell 3.0)

A partir de Windows PowerShell 3.0, los módulos se importan automáticamente cuando cualquier cmdlet o función del módulo se utiliza en un comando. Esta característica funciona en cualquier módulo en un directorio que esté incluido en el valor de la variable de entorno PSModulePath. Sin embargo, si no guarda su módulo en una ruta válida, aún puede cargarlo usando la opción explícita Import-Module, descrita anteriormente.

Las siguientes acciones activan la importación automática de un módulo, también conocida como "carga automática de módulo".

  • Usar un cmdlet en un comando. Por ejemplo, al escribir Get-ExecutionPolicy se importa el módulo Microsoft.PowerShell.Security que contiene el cmdlet Get-ExecutionPolicy.

  • Usando el cmdlet Get-Command para obtener el comando. Por ejemplo, al escribir Get-Command Get-JobTrigger se importa el módulo PSScheduledJob que contiene el cmdlet Get-JobTrigger. Un comando Get-Command que incluye caracteres comodín se considera descubrimiento y no activa la importación de un módulo.

  • Usar el cmdlet Get-Help para obtener ayuda para un cmdlet. Por ejemplo, al escribir Get-Help Get-WinEvent se importa el módulo Microsoft.PowerShell.Diagnostics que contiene el cmdlet Get-WinEvent.

Para admitir la importación automática de módulos, el cmdlet Get-Command obtiene todos los cmdlets y funciones de todos los módulos instalados, incluso si el módulo no se importa a la sesión. Para obtener más información, consulte el tema de ayuda del cmdlet Get-Command.

El proceso de importación

Cuando se importa un módulo, se crea un nuevo estado de sesión para el módulo y se crea un objeto System.Management.Automation.PSModuleInfo en la memoria. Se crea un estado de sesión para cada módulo que se importa (esto incluye el módulo raíz y cualquier módulo anidado). Los miembros que se exportan desde el módulo raíz, incluidos los miembros que fueron exportados al módulo raíz por cualquier módulo anidado, luego se importan al estado de sesión del autor de la llamada.

Los metadatos de los miembros que se exportan desde un módulo tienen una propiedad ModuleName. Esta propiedad se completa con el nombre del módulo que los exportó.

Advertencia

Si el nombre de un miembro exportado usa un verbo no aprobado o si el nombre del miembro usa caracteres restringidos, se muestra una advertencia cuando se ejecuta el cmdlet Import-Module.

De forma predeterminada, el cmdlet Import-Module no devuelve ningún objeto a la canalización. Sin embargo, el cmdlet admite un parámetro PassThru que se puede usar para devolver un objeto System.Management.Automation.PSModuleInfo para cada módulo que se importa. Para enviar resultados al host, los usuarios deben ejecutar el cmdlet Write-Host.

Restringir los miembros que se importan

Cuando se importa un módulo mediante el cmdlet Import-Module, de forma predeterminada, todos los miembros del módulo exportados se importan a la sesión, incluidos los comandos exportados al módulo mediante un módulo anidado. De forma predeterminada, las variables y alias no se exportan. Para restringir los miembros que se exportan, utilice un manifiesto de módulo. Para restringir los miembros que se importan, utilice los siguientes parámetros del cmdlet Import-Module.

  • Función: este parámetro restringe las funciones que se exportan. (Si está utilizando un manifiesto de módulo, consulte la clave FunctionsToExport).

  • `Cmdlet: este parámetro restringe los cmdlets que se exportan (si está utilizando un manifiesto de módulo, consulte la clave CmdletsToExport).

  • Variable: este parámetro restringe las variables que se exportan (si está utilizando un manifiesto de módulo, consulte la clave VariablesToExport).

  • Alias: este parámetro restringe los alias que se exportan (si está utilizando un manifiesto de módulo, consulte la clave AliasesToExport).

Ver también

Escribir un módulo de Windows PowerShell

Artículos relacionados