web-dev-qa-db-fra.com

Quelle est la différence entre Add-PsSnapIn et Import-Module

Powershell dispose de deux moyens pour importer des applets de commande supplémentaires dans une session, Add-PsSnapIn et Import-Module. Les documents ne sont pas du tout clairs quant au moment où l'un choisira l'un plutôt que l'autre. Quelqu'un connaît-il la différence entre ceux-ci?

35
Justin R.

Les modules ont vu le jour dans PowerShell V2. Cependant, la V2 peut toujours charger des composants logiciels enfichables, si nécessaire. La grande différence est que les modules peuvent être déployés à l'aide d'Xcopy. Il n'est pas nécessaire d'enregistrer quoi que ce soit. Pour déployer un Snapin, un programme d'installation devrait pirater le registre, ce qui nécessiterait des privilèges élevés. Pour charger un module, il vous suffit d'utiliser la commande Import-Module.

Les modules peuvent également contenir beaucoup plus de métadonnées à l'aide d'un manifeste de module, qui peut spécifier toutes sortes de choses qui pourraient être utiles à l'utilisateur final, notamment la version, les dépendances sur d'autres modules et les hôtes PowerShell qui peuvent exécuter le module.

Cela étant dit, si vous écrivez un module binaire en C # ou VB, vous utilisez toujours la même classe de base PSSnapin.

Pour obtenir plus d'informations, consultez

PS > help about_modules
35
Andy Schneider

Dans la v2, les modules sont le moyen préféré d'organiser les applets de commande, les fournisseurs, les fonctions, les alias et les autres commandes que vous créez. Vous n'installez pas de module. Vous importez simplement un module dans la session PowerShell à l'aide de l'applet de commande Import-Module.

AFAIK, un composant logiciel enfichable PowerShell est plus une approche v1. Il y a encore quelques équipes chez MS qui créent des snapins au lieu de modules. Par exemple, les applets de commande SharePoint 2010. Les composants logiciels enfichables PowerShell sont des fichiers binaires (.dll) qui implémentent des applets de commande et des fournisseurs. Vous devez installer un composant logiciel enfichable, puis ajouter les applets de commande du composant logiciel enfichable à une session PowerShell à l'aide de l'applet de commande Add-PSSnapin.

17
ravikanth

Ceci est mal documenté, alors prenez ma réponse avec un grain de sel. Jetez un œil aux documents des développeurs pour snapin et modules . En bref, le composant logiciel enfichable est "juste" un .Net assebly tandis que le module peut contenir des scripts, des asseblies et plus encore.

4
vonPryz

PSSnapin fournit un moyen de protéger vos assemblys en installant des DLL dans un répertoire protégé par rapport au module qui peut être lu en remplaçant simplement des fichiers.

Réf: Lien MSDN pour PSSnapin

1
Nikhil Doomra