Powershell有两种方法可以将其他cmdlet导入会话,即Add-PsSnapIn和Import-Module。关于何时选择一个而不是另一个,文档并不清楚。有人知道这些之间的区别吗?
答案 0 :(得分:33)
PowerShell V2中出现了模块。如果需要,V2仍然可以加载Snapins。最大的区别是可以使用Xcopy部署模块。没有必要注册任何东西。要部署Snapin,安装程序必须破解注册表,这需要提升priveleges。要加载模块,只需使用Import-Module命令。
模块可以使用Module Manifest获得更多元数据,它可以指定最终用户可能知道的各种事物,包括版本,对其他模块的依赖性,以及哪些PowerShell主机可以运行模块。
所有这一切,如果你用C#或VB编写二进制模块,你仍然使用相同的PSSnapin基类。
要获取更多信息,请查看
PS > help about_modules
答案 1 :(得分:16)
在v2中,模块是组织您创建的cmdlet,提供程序,函数,别名和其他命令的首选方法。您没有安装模块。您只需使用Import-Module cmdlet将模块导入PowerShell会话。
AFAIK,PowerShell管理单元更像是v1方法。 MS仍然有一些团队创建了snapins而不是模块。例如,SharePoint 2010 cmdlet。 PowerShell管理单元是实现cmdlet和提供程序的二进制文件(.dll)。您需要安装管理单元,然后使用Add-PSSnapin cmdlet将管理单元中的cmdlet添加到PowerShell会话中。
答案 2 :(得分:4)
答案 3 :(得分:1)
与模块相比,PSSnapin通过在受保护的目录中安装DLL来提供保护程序集的方法,而模块可以通过替换文件来播放。
答案 4 :(得分:1)
Add-PSSnapin
和Import-Module
用于在当前PowerShell会话中获取外部第三方库(脚本文件/二进制文件/ dll)。
模块比PSSnapins更易于使用。
与PSSnapin相比,主要优势模块是添加后,我们无法从当前PowerShell会话中删除或卸载PSSnapin。
但是可以使用Remove-Module
注意: PS版本1.0中引入的PSSnapin概念和PS版本2.0中引入的模块。
参考:- This