2011-02-18 81 views
31

Powershell有两种方法可将额外的cmdlet导入会话,Add-PsSnapIn和Import-Module。关于何时会选择哪一个的文档完全不清楚。有人知道这些之间的区别吗?Add-PsSnapIn和Import-Module之间的区别是什么

+0

我发现的IIS 7管理管理单元现在是一个模块作为IIS 7.5`进口模块webadministration`源:http://powershell.com/cs/forums/t/8209 .aspx – northben 2012-11-15 21:03:11

回答

30

模块在PowerShell V2中出现。如果需要,V2仍然可以加载Snapins。最大的区别是可以使用Xcopy部署模块。没有必要注册任何东西。要部署Snapin,安装程序必须破解注册表,这需要提升权限。要加载模块,只需使用Import-Module命令。

使用模块清单以及模块可以有更多的元数据,它可以指定各种对最终用户来说可能有用的东西,包括版本,其他模块的依赖关系以及哪些PowerShell主机可以运行该模块。所有这些,如果你正在用C#或VB编写一个二进制模块,你仍然使用相同的PSSnapin基类。

要获取更多信息,请

PS > help about_modules 
4

这是记录不完善的,所以用一粒盐回答我的答案。查看snapinmodules的开发者文档。简而言之,snapin只是“.Net”组件,而模块可以包含脚本,组件等。

13

在第2版中,模块是组织创建的cmdlet,提供程序,函数,别名和其他命令的首选方式。您不需要安装模块。您只需使用Import-Module cmdlet将模块导入到PowerShell会话中。

AFAIK,PowerShell管理单元更多的是v1方法。在MS创建snapins而不是模块上仍然有几个团队。例如,SharePoint 2010 cmdlet。 PowerShell管理单元是实现cmdlet和提供程序的二进制文件(.dll)。您需要安装管理单元,然后使用Add-PSSnapin cmdlet将管理单元中的cmdlet添加到PowerShell会话中。

+0

PowerShell的TFS Power Tools实用程序仍然作为管理单元实施。 – JamieSee 2014-04-29 20:20:53

+0

当你说“*你没有安装模块*”时,你忘记了模块必须首先被xcopy部署到其中一个模块文件夹,或者是当前用户在%USERPROFILE%\ Documents下的个人文件夹,或者是机器的全局在`%WINDIR%\ system32 \ WindowsPowerShell \ v1.0 \ Modules`下。 – Alexey 2014-11-20 10:28:12

1

PSSnapin提供了一种通过在受保护的目录中安装DLL文件来保护您的组件相比,其可以通过只替换文件播放模块。

价:MSDN Link for PSSnapin