Logotipo augurarte

PowerShell: ¿Spnap-in o Module?

Repasando temas para la presentación del evento de mañana, “Escenarios SQL Server y SQL Azure” dentro del evento especial “12 horas con SQL Server“, me estoy montando alguno de los ejemplos que llevaba para la sesión con PowerShell, por si da tiempo y por ver otra forma de la que solemos usar en otras demos, e instalando algunos de los Azure CmdLets he recordado que desde la versión 2.0 de PowerShell existen dos formas de instalar nuevos comandos de PowerShell, bien usando la instalación como Snap-in de PowerShell o bien instalándolos como un Módulo de PowerShell y quizá más de uno se pregunte cuál es la diferencia entre instalarlo de una u otra manera, que por otra parte me parece lógico.PowerShell dispone de dos formas de importar cmdlets adicionales (desde la versión 2.0). La primera de las formas es usando un Snap-in de PowerShell (la que se venía usando desde PowerShell 1.0) y la segunda es mediante la importación de un módulo con dichos comandos (esta forma se ha intorducido en PowerShell 2.0). En la documentación quizá no queda todo lo claro que debería por eso he querido publicar al respecto.

Releyendo dicha documentación podemos concluir que una de las principales diferencias es que los módulos de PowerShell se pueden desplegar usando la utilidad ya conocida para aplicaciones en la nube (y Windows en general) XCOPY, sin necesidad de registrar nada más para estos despliegues. Esta parece la forma “aconsejada” a partir de la versión 2.o. Por el contrario, el despliegue usando Snap-in necesita de un proceso de instalación que incluye el acceso al registro de Windows, que en determinadas circunstancias puede requerir de privilegios elevados para poder realizarlo. La importación de un módulo es más sencilla. Símplemente se lanza el comando de importar-módulo y ya está.

Los módulos incluyen un conjunto de metadatos mayor, importante también de cara a los usuarios finales de dichos comandos de PowerShell (número de versión, dependencias con otros módulos…). Por eso yo he elegido esta forma para la última versión de Windows Azure PowerShell CmdLets.

Tampoco quiero decir que no sea apropiado ya el uso de los Snap-in, ahí siguen y sigues pudiendo utilizarlo si así lo deseas. Incluso parece la opción más apropiada si estás desarrollando un módulo binario en C#/VB, en cuyo caso podrás seguir usando la clase base PSSNapin.

En fin espero que esto pueda servir para conocer más en detalle la diferencia entre usar una instalación basada aen módulos o en Snap-in. Y por supuesto, siempre os queda comprobar la documentación de PowerShell:

PS > help about_modules

Happy coding :-)

Leave a Reply

  • Search

  • About

    • augur|arte:> Your meeting point with User Interface applied Web design, to the standards in Web development; Web usability and accesibility standards and best practices. I share too some thoughts about the new "digital style of life".
  • Meta