Búsqueda de sitios web

PowerShell comprueba si el módulo está instalado [3 formas]


Usando el cmdlet Get-Module

Utilice Get-Module con el parámetro -Name para comprobar si un módulo está instalado en PowerShell.

Utilice el cmdlet Get-Module:

Get-Module -ListAvailable -Name ImportExcel

Producción :

Directory: C:\Users\user\Documents\WindowsPowerShell\Modules
ModuleType Version    Name                              ExportedCommands
---------- -------    ----                              ----------------
Script     7.8.4      ImportExcel                       {Add-ConditionalFormatting,                                                             Add-ExcelChart, Add-ExcelDataV...

El Get-Module recupera información sobre los módulos cargados y los módulos disponibles que se pueden importar.

El parámetro -ListAvailable filtra los resultados solo para mostrar los módulos disponibles que se pueden importar pero que no están cargados actualmente. Este parámetro solo mostrará los módulos disponibles en los directorios de módulos predeterminados de PowerShell y no necesariamente ningún directorio personalizado adicional.

El parámetro -Name filtra los resultados solo para mostrar los módulos que coinciden con el nombre dado. En este caso, el nombre que se utiliza es ImportExcel. Es útil determinar si un módulo está instalado y disponible para importar antes de intentar importarlo con el cmdlet Import-Module.

Usando el cmdlet Test-ModuleManifest

Utilice Test-ModuleManifest para comprobar si el archivo de manifiesto del módulo es válido en PowerShell.

Utilice el cmdlet Test-ModuleManifest:

Test-ModuleManifest -Path C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\ImportExcel.psd1

Producción :

Directory: C:\Users\user\Documents\WindowsPowerShell\Modules
ModuleType Version    Name                              ExportedCommands
---------- -------    ----                              ----------------
Script     7.8.4      ImportExcel                       {Add-ConditionalFormatting,                                                             Add-ExcelChart, Add-ExcelDataV...

El cmdlet Test-ModuleManifest se utiliza para validar un archivo de manifiesto de módulo y verificar que contiene los campos y valores requeridos.

El parámetro -Path especifica la ruta al archivo de manifiesto del módulo que debe probarse. En este caso, la ruta es C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\ImportExcel.psd1, que es la ruta al archivo de manifiesto para . ImportarExcel módulo. Cuando se ejecuta el cmdlet, leerá el archivo de manifiesto y realizará pruebas de validación.

Usando la función Load-Module()

Utilice la función Load-Module() para comprobar si un módulo está instalado en PowerShell.

Utilice la función Load-Module():

function Load-Module ($n) 
{
    if (Get-Module | Where-Object {$_.name -eq $n}) {
        Write-Host "Module $n is already imported."
    }
    else {
        if (Get-Module -ListAvailable | Where-Object {$_.name -eq $n}) {
            Import-Module $n -Verbose
        }
        else {
            if (Find-Module -Name $n | Where-Object {$_.name -eq $n}) {
                Install-Module -Name $n -Force -Verbose -Scope CurrentUser
                Import-Module $n -Verbose
            }
            else {
                Write-Host "Module $n not imported, not available and not in an online gallery, exiting."
                Exit 1
            }
        }
    }
}
Load-Module "ImportExcel"

Producción :

VERBOSE: Loading module from path
'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\ImportExcel.psd1'.
VERBOSE: Loading 'Assembly' from path 'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\EPPlus.dll'.
VERBOSE: Loading 'Assembly' from path 'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\EPPlus.dll'.
VERBOSE: Populating RepositorySourceLocation property for module ImportExcel.
VERBOSE: Loading module from path
'C:\Users\user\Documents\WindowsPowerShell\Modules\ImportExcel\7.8.4\ImportExcel.psm1'.
VERBOSE: Exporting function 'ColorCompletion'.
VERBOSE: Exporting function 'ListFonts'.
VERBOSE: Exporting function 'NumberFormatCompletion'.
VERBOSE: Exporting function 'WorksheetArgumentCompleter'.
VERBOSE: Exporting function 'Invoke-ExcelReZipFile'.
....

En el código anterior, Load-Module toma un único parámetro, $n, que especifica el nombre del módulo a cargar. A continuación, la función comprueba si el módulo ya está importado y, si lo está, simplemente genera un mensaje indicando ese hecho. Finalmente, si aún es necesario importar el módulo, la función intenta importarlo.

Para importar el módulo, la función primero verifica si está disponible en el disco usando el cmdlet Get-Module con el parámetro -ListAvailable. Luego, si está disponible, la función utiliza el cmdlet Import-Module para importarlo, con el parámetro -Verbose para generar información detallada sobre el proceso de importación.

Si el módulo no está disponible en el disco, la función comprueba si está disponible en una galería en línea utilizando el cmdlet Find-Module. Si está disponible, la función la instala usando el cmdlet Install-Module, con el parámetro -Force para forzar la instalación sin preguntar, el parámetro -Verbose parámetro para generar información detallada sobre el proceso de instalación, y el parámetro -Scope CurrentUser para instalar el módulo solo para el usuario actual.

Luego, la función importa el módulo como antes. Si el módulo no está disponible en el disco y no en una galería en línea, la función genera un mensaje que indica ese hecho y sale con un código de error de 1.

Finalmente, se llama a la función con el parámetro "ImportExcel", que es el nombre del módulo a cargar. Esto podría reemplazarse con el nombre de cualquier otro módulo que el script deba usar.

Los usuarios de PowerShell pueden utilizar los cmdlets Get-Module y Test-ModuleManifest y la función Load-Module() para garantizar que los módulos que necesitan estén instalados. y listo para usar en sus guiones y sesiones interactivas.

Se trata de PowerShell, compruebe si el módulo está instalado.

Artículos relacionados