В чем разница между Add-PsSnapIn и Import-Module - PullRequest
34 голосов
/ 18 февраля 2011

Powershell имеет два средства для импорта дополнительных командлетов в сеанс: Add-PsSnapIn и Import-Module.Документы не совсем ясны относительно того, когда один выбрал бы один по другому.Кто-нибудь знает разницу между ними?

Ответы [ 4 ]

33 голосов
/ 18 февраля 2011

Модули появились в PowerShell V2.V2 все еще может загружать Snapins, хотя, если это необходимо.Большая разница в том, что модули могут быть развернуты с помощью Xcopy.Нет необходимости что-либо регистрировать.Чтобы развернуть Snapin, установщик должен взломать реестр, что потребует повышенных привилегий.Чтобы загрузить модуль, вам просто нужно использовать команду Import-Module.

Модули могут иметь намного больше метаданных, используя также Манифест модуля, который может указывать все виды вещей, которые могут быть полезны для конца.пользователь должен знать, включая версию, зависимости от других модулей и то, какие хосты powershell могут запустить модуль.

Все это, как говорится, если вы пишете двоичный модуль в C # или VB, вы все равно используете тот же PSSnapinБазовый класс.

Для получения дополнительной информации, проверьте

PS > help about_modules
16 голосов
/ 18 февраля 2011

В v2 модули являются предпочтительным способом организации командлетов, поставщиков, функций, псевдонимов и других создаваемых вами команд.Вы не устанавливаете модуль.Вы просто импортируете модуль в сеанс PowerShell с помощью командлета Import-Module.

AFAIK, оснастка PowerShell - это скорее подход v1.В MS все еще есть несколько команд, создающих оснастки вместо модулей.Например, командлеты SharePoint 2010.Оснастки PowerShell - это двоичные файлы (.dll), в которых реализованы командлеты и поставщики.Необходимо установить оснастку, а затем добавить командлеты в оснастке в сеанс PowerShell с помощью командлета Add-PSSnapin.

4 голосов
/ 18 февраля 2011

Это плохо документировано, поэтому возьмите мой ответ с крошкой соли.Взгляните на документы разработчика для оснасток и модулей .Вкратце, оснастка - это просто сборка .Net, в то время как модуль может содержать скрипты, сборки и многое другое.

1 голос
/ 17 февраля 2016

PSSnapin предоставляет способ защитить ваши сборки путем установки DLL в защищенный каталог по сравнению с модулем, который можно воспроизвести, просто заменив файлы.

Ссылка: Ссылка MSDN для PSSnapin

...