В чем разница между Add-PsSnapIn и Import-Module

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

4 ответа

Решение

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

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

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

Чтобы получить больше информации, проверьте

PS > help about_modules

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

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

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

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

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

Add-PSSnapin а также Import-Moduleиспользуются для получения внешних сторонних библиотек (файлов сценариев / двоичных файлов / dll) в текущем сеансе PowerShell. Модули использовать немного проще, чем PSSnapins.

Основное преимущество модуля над PSSnapin заключается в том, что мы не можем удалить или выгрузить PSSnapin из текущего сеанса PowerShell после его добавления. Но модули можно удалить из текущего сеанса PowerShell вручную, используяRemove-Module

ПРИМЕЧАНИЕ. Концепция PSSnapin, представленная в PS версии 1.0, и модуль, представленный в PS версии 2.0.

Ссылка:-Это

Другие вопросы по тегам