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?
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
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.
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.