Powershell 有两种将其他 cmdlet 导入会话的方法,Add-PsSnapIn 和 Import-Module。关于何时选择一个而不是另一个,文档完全不清楚。有人知道这些之间的区别吗?
5 回答
模块出现在 PowerShell V2 中。如有必要,V2 仍可以加载 Snapins。最大的不同是可以使用 Xcopy 部署模块。无需注册任何东西。要部署 Snapin,安装程序必须破解注册表,这需要提升权限。要加载模块,您只需使用 Import-Module 命令。
模块也可以使用模块清单拥有更多元数据,它可以指定可能对最终用户有用的各种信息,包括版本、对其他模块的依赖关系以及哪些 powershell 主机可以运行该模块。
尽管如此,如果您使用 C# 或 VB 编写二进制模块,您仍然使用相同的 PSSnapin 基类。
要获取更多信息,请查看
PS > help about_modules
在 v2 中,模块是组织您创建的 cmdlet、提供程序、函数、别名和其他命令的首选方式。您不安装模块。您只需使用 Import-Module cmdlet 将模块导入 PowerShell 会话。
AFAIK,PowerShell 管理单元更像是一种 v1 方法。MS 仍有一些团队创建管理单元而不是模块。例如,SharePoint 2010 cmdlet。PowerShell 管理单元是实现 cmdlet 和提供程序的二进制文件 (.dll)。您需要安装管理单元,然后使用 Add-PSSnapin cmdlet 将管理单元中的 cmdlet 添加到 PowerShell 会话。
PSSnapin 提供了一种通过在受保护目录中安装 DLL 来保护您的程序集的方法,而 Module 则可以通过替换文件来播放。
Add-PSSnapin
并Import-Module
用于在当前 PowerShell 会话中获取外部 3rd 方库(脚本文件/二进制文件/dll)。模块比 PSSnapins 更容易使用。
The main advantage module over PSSnapin is we can't remove or unload PSSnapin from the current PowerShell session once it is added.
But modules can be removed from the current PowerShell session manually, using Remove-Module
NOTE: The concept PSSnapin introduced in PS version 1.0 and module introduced in PS version 2.0.
Ref:- This