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

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


person Justin R.    schedule 18.02.2011    source источник
comment
Я обнаружил, что оснастка управления IIS 7 теперь является модулем начиная с IIS 7.5 import-module webadministration источник: powershell.com/cs/forums/t/8209.aspx   -  person northben    schedule 16.11.2012


Ответы (5)


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

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

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

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

PS > help about_modules
person Andy Schneider    schedule 18.02.2011
comment
Установщик Snapin должен будет взломать реестр. Означает ли это, что вы можете доверять снапинам больше, чем модулям? Проверяются ли снапины Microsoft? Просто любопытно - person Kellen Stuart; 28.10.2016

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

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

person ravikanth    schedule 18.02.2011
comment
Утилиты TFS Power Tools для PowerShell также по-прежнему реализованы в виде оснастки. - person JamieSee; 30.04.2014
comment
Когда вы говорите вы не устанавливаете модуль, вы забываете, что модуль должен быть сначала развернут по xcopy в одной из папок Modules, либо личных для текущего пользователя в %USERPROFILE%\Documents, либо в глобальной для машины в %WINDIR%\system32\WindowsPowerShell\v1.0\Modules. - person Alexey; 20.11.2014
comment
Это частично верно. Используя Import-Module, вы можете указать абсолютный путь к файлу модуля и загрузить его. - person ravikanth; 20.11.2014

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

person vonPryz    schedule 18.02.2011

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

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

person Nikhil Doomra    schedule 17.02.2016

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

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

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

Ссылка: - Это

person bug    schedule 02.05.2020