2011-02-18 20 views
31

Powershell tiene dos medios para importar cmdlets adicionales en una sesión, Add-PsSnapIn e Import-Module. Los documentos no están del todo claros con respecto a cuándo uno elegiría uno sobre el otro. ¿Alguien sabe la diferencia entre estos?Cuál es la diferencia entre Add-PsSnapIn e Import-Module

+0

descubrí que el complemento de administración de IIS 7 es ahora un módulo como de IIS 7.5 'importación-módulo webadministration' fuente: http://powershell.com/cs/forums/t/8209 .aspx – northben

Respuesta

30

Los módulos surgieron en PowerShell V2. V2 aún puede cargar Snapins, si es necesario. La gran diferencia es que los módulos se pueden implementar usando Xcopy. No hay necesidad de registrar nada. Para implementar un Snapin, un instalador tendría que piratear el registro, lo que requeriría priveleges elevados. Para cargar un módulo, simplemente tiene que usar el comando Importar-Módulo.

Los módulos pueden tener muchos más metadatos usando también un Manifiesto de módulo, que puede especificar todo tipo de cosas que pueden ser útiles para el usuario final, incluida la versión, dependencias de otros módulos y qué hosts de powershell pueden ejecutarse el módulo.

Dicho todo esto, si está escribiendo un módulo binario en C# o VB, todavía usa la misma clase base PSSnapin.

Para obtener más información, echa un vistazo a

PS > help about_modules 
+0

"El instalador de Snapin tendría que piratear el registro" ¿significa eso que puede confiar en los snapins más que en los módulos? ¿Snapins es verificado por Microsoft? Sólo curioso –

4

Esto está poco documentado, así que tome mi respuesta con un grano de sal. Eche un vistazo a los documentos del desarrollador para snapin y modules. Brevemente, snapin es "solo" .Net assebly mientras que el módulo puede contener scripts, asseblies y más.

13

En v2, los módulos son la forma preferida de organizar los cmdlets, proveedores, funciones, alias y otros comandos que crea. Usted no instala un módulo. Simplemente importa un módulo en la sesión de PowerShell usando el cmdlet Import-Module.

AFAIK, un complemento de PowerShell es más un enfoque v1. Todavía hay algunos equipos en MS creando snapins en lugar de módulos. Por ejemplo, cmdlets de SharePoint 2010. Los snapins de PowerShell son binarios (.dll) que implementan cmdlets y proveedores. Debe instalar un complemento y luego agregar los cmdlets en el complemento a una sesión de PowerShell mediante el cmdlet Add-PSSnapin.

+0

Las utilidades TFS Power Tools para PowerShell también se siguen implementando como un complemento. – JamieSee

+0

Cuando dices "* no instalas un módulo *", estás olvidando que el módulo primero debe ser implementado por xcopy en una de las carpetas de Módulos, ya sea personal para el usuario actual bajo '% PERFIL DE USUARIO \ Documentos', o máquina global en '% WINDIR% \ system32 \ WindowsPowerShell \ v1.0 \ Modules'. – Alexey

+1

Eso es parcialmente correcto. Usando Import-Module, puede especificar la ruta absoluta a un archivo de módulo y cargarlo. – ravikanth

1

PSSnapin proporciona una manera de proteger sus asambleas mediante la instalación de DLL en el directorio protegido en comparación con el módulo que se puede jugar con sólo el reemplazo de archivos.

Ref: MSDN Link for PSSnapin

Cuestiones relacionadas