2011-02-24 26 views
15

Estoy a punto de escribir un script de PowerShell para los administradores de Windows, con el fin de ayudarlos en ciertas tareas relacionadas con la implementación de una aplicación web.Cuándo elegir el desarrollo de un módulo de PowerShell sobre PowerShell Script

¿Hay alguna razón por la que debería favorecer o excluir el desarrollo de un módulo de PowerShell (.psm1) en vez de hacer un script de PowerShell (.ps1)?

Argumentos para desarrollar una secuencia de comandos

  • simplicidad: Yo lo que el uso de un guión es un poco más fácil y más sencillo para los administradores de Windows, ya que no requiere el módulo a instalar (pero podría estar mal ya que no soy un administrador de Windows!).
  • desarrollo más rápido: desarrollar un módulo requiere una programación más cuidadosa y una exposición de métodos internos, es como diseñar una API y por lo tanto debe ser más riguroso.

Argumentos para desarrollar un módulo de:

  • reutilización: se trata de las primeras cosas que viene a la mente: si el administrador desea integrar nuestro guión en un guión propio, podría ser ¿le resulta más fácil reutilizar un módulo exponiendo uno (o varios) cmdlet en lugar de invocar nuestro script?
  • ...

Si conoce el caso de uso común de las secuencias de comandos PS vs módulos PS, o las limitaciones técnicas de cada opción, que podría ayudar.

+1

Un pensamiento: al crear el código, créelo como un script; de esa manera obtienes el beneficio de "desarrollo más rápido".Una vez que tenga un script en funcionamiento, migrelo a un módulo (es decir, copie las funciones, agregue documentación y, en general, asegúrese de que esté completamente empaquetada); de esta manera, obtienes la funcionalidad trabajando rápidamente mientras estás en la mentalidad de desarrollador, luego cambias a la mentalidad de tu arquitecto cuando refactorizas/reenvasas para su reutilización. – JohnLBevan

Respuesta

17

Para entender qué módulos se pueden hacer por usted, lea esto: http://msdn.microsoft.com/en-us/library/dd878310(v=vs.85).aspx

En una cáscara de nuez,

módulos de Windows PowerShell le permiten particionar, organizar, y el resumen de su código de Windows PowerShell en la auto -con unidades reutilizables. Con estas unidades reutilizables, los administradores, los desarrolladores de scripts y los desarrolladores de cmdlet pueden compartir fácilmente sus módulos directamente con los demás. Los desarrolladores de scripts también pueden volver a empaquetar módulos de terceros para crear aplicaciones personalizadas basadas en scripts. Los módulos, similares a los módulos en otros lenguajes de scripting como Perl y Python, permiten soluciones de scripting listas para producción que usan componentes reutilizables y redistribuibles, con el beneficio adicional de permitirle empacar y abstraer múltiples componentes para crear soluciones personalizadas.

Si su secuencia de comandos ya tiene funciones y no está escrita para realizar una sola tarea, simplemente puede cambiar el nombre a .PSM1 para convertirla en módulo. Si no está utilizando funciones, por supuesto, no hay más remedio que ir por .ps1. En tal caso, cada .ps1 se usará para realizar una única tarea. Siempre prefiero los módulos cuando comparto los guiones que escribo con otros.

8

Me gustan los módulos por la capacidad de "ocultar" funciones/variables y solo exportar las que yo quiera.

+0

Gracias, punto interesante, aunque creo que puede proporcionar el mismo comportamiento en una secuencia de comandos anidando funciones dentro de otra función. – Olivier

+1

Eso es cierto, pero si la función "oculta" necesita ser utilizada por varias otras funciones, estás atascado. –

Cuestiones relacionadas