Scripts y manifiesto de módulos
El siguiente paso es convertir los scripts en módulos.
Los módulos sirven para agrupar todas las heramientas personales en un solo fichero.
Crear un módulo es tan sencillo como grabar el script y en vez de guardarlo como .ps1, lo grabamos como .psm1.
Una vez tenemos el módulo, podemos importarlo indicando la ruta completa a la ubicación del fichero:
1 PS> Import-Module c:\scripts\misHerramientas.psm1
Verificamos que hemos importado todas las funciones contenidas en el módulo mediante:
1 PS> Get-Command -module misHerramientas
Pero todavía podemos ir un poco más allá y hacer que el módulo se importe automáticamente cuando un script intente usar una función contenida en él.
Para ello, debemos colocar el módulo en una ubicación especial. Podemos inspeccionar las ubicaciones en las que se buscan los módulos de forma automática mediante:
powershell
PS> $env:PSModulePath -split ";"
`
Usamos -split “;” para facilitar la lectura de las diferentes ubicaciones de la variable.
No es recomendable ubicar nuestros módulos personales en c:\windows\system32\windowsPowerShell\v1.0\modules\.
Para nuestros módulos personalizados, debemos usar la ubicación: c:\users\{nombre.usuario}\Documents\PowersShell\Modules.
La ruta
c:\users\{nombre.usuario}\Documents\PowersShell\Modulesno existe por defecto y debemos crearla manualmente.
En la carpeta Modules creamos una carpeta para nuestro módulo; esta carpeta debe llamarse exactamente como el módulo.
Una vez hemos copiado el módulo en esta ubicación especial, si ejecutamos un script que hace referencia a una de las funciones incluidas en nuestro módulo:
- en la consola, tenemos autocompletado mediante la tecla
Tabpara las funciones incluidas en el módulo. - en los scripts, al hacer referencia a una función incluida en el módulo, PowerShell lo carga de forma dinámica sin que tengamos que importarlo explícitamente en el script.
Manifiesto
El manifiesto indica qué es lo que contiene el módulo. El manifiesto tambien permite definir dependencias, de manera que si, más adelante, cambiamos alguna de las dependencias de nuestro módulo, quienes usen el módulo sean conscientes de los cambios (en vez de encontrarse con que sus scripts fallan sin saber porqué).
El manifiesto también nos ayuda a gestionar las diferntes versiones que puede tener el módulo, recursos que necesita, etc.
Cuando PowerShell importa un módulo, busca:
- Un manifiesto para el módulo: un fichero con el mismo nombre del módulo y extensión
.psd1. - Un módulo binario como
MisHerramientas.dll - Un módulo :
MisHerramientas.psm1 - El cmdlet
New-ModuleManifest
Una manera muy sencilla de establecer los valores para las propiedades del cmdlet
New-MmoduleManifestes a través deShow-Command New-ModuleManifest.
Seguramente eliminaré esta parte o la reduciré al mínimo.