psm1 powershell import-module

powershell - import module psm1



PowerShell Import-Module vs Dot Sourcing (3)

Algunas características del módulo además de otras respuestas.

  • En PowerShell V3, uno no tiene que llamar a Import-Module para usar los comandos exportados del módulo. Esto es especialmente útil cuando los comandos se usan interactivamente. PowerShell de alguna manera almacena en caché y conoce todos los comandos de módulo disponibles e incluso su ayuda Get-Help SomeCommand (esto no es cierto para la ayuda del módulo Get-Help about_SomeModule , sin embargo).

  • Hay varias diferencias sutiles en el comportamiento de las funciones de punto de origen y las funciones del módulo de script. No es fácil enumerarlos a todos, aquí hay solo un ejemplo: comportamiento extraño con el alcance y los módulos de la variable Powershell scriptblock, ¿alguna sugerencia? A veces, usar módulos de script resulta doloroso, especialmente cuando uno descubre diferencias no deseadas y problemas demasiado tarde, es decir, las cosas simples funcionan bien al principio del desarrollo, pero las cosas complejas empiezan a ir mal más tarde.

En general, normalmente uso módulos, excepto en los casos en que no funcionan bien. Uno de ellos es invocar bloques de script de usuario pasados ​​en funciones de módulo de script.

Si quiero separar parte de mi funcionalidad de mi script principal de PowerShell, puedo escribir eso como un archivo .ps1 y fuente de puntos de la misma manera o puedo crearlo como un .psm1 e importar el mismo usando Import-Module .

¿Cuál es mejor y por qué?


Dotsourcing + script y módulos son 2 cosas diferentes. Los módulos son excelentes para recopilar / agrupar funciones y cmdlets que usarías en un script. Si tiene funciones que desea usar de forma interactiva (llama a una función en una consola), entonces el módulo puede ser un gran ajuste.

Si tiene una secuencia de comandos grande para la que ejecuta ... digamos "migrar un recurso compartido de archivos", o una secuencia de comandos a la que llama regularmente usando el Programador de tareas, entonces, será más fácil obtener puntos.

Depende de lo que necesites. Resumen:

  • Si solo usa las funciones / guiones en ESTA situación (guión / trabajo) = use dot source.
  • Si usa funciones / scripts comunes que también se usan en otros scripts O si desea llamar a algunas de las funciones de manera interactiva, etc. = use el módulo.

Los módulos son los mejores para las bibliotecas. Le dan más control sobre lo que se exporta desde el módulo. Es decir, de forma predeterminada, todas las variables de script en un archivo PSM1 son privadas, no visibles fuera del módulo cuando se importan. Igualmente, todas las funciones son públicas. Sin embargo, puede usar Export-ModuleMember en su archivo PSM1 para controlar exactamente qué variables, funciones, alias, cmdlets, etc. exporta desde su módulo. Los módulos también se pueden eliminar de su sesión, lo cual es una gran diferencia con la secuencia de comandos .PS1 de dotsourcing. Otra diferencia es que las funciones de los módulos están espaciadas por el módulo en el que están, de modo que puede acceder fácilmente a las funciones basadas en módulos con nombres idénticos, prefijando el nombre del módulo y "/" al nombre de la función, por ejemplo, PSCX / Get-Uptime. En ISE, este prefijo también invoca soporte intellisense.

Generalmente recomiendo ir con módulos. :-)