【问题标题】:What's the difference between Add-PsSnapIn and Import-ModuleAdd-PsSnapIn 和 Import-Module 有什么区别
【发布时间】:2011-02-18 07:59:11
【问题描述】:

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

【问题讨论】:

标签: powershell import-module


【解决方案1】:

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

模块也可以使用模块清单包含更多元数据,它可以指定可能对最终用户有用的各种信息,包括版本、对其他模块的依赖关系以及哪些 powershell 主机可以运行模块。

话虽如此,如果您使用 C# 或 VB 编写二进制模块,您仍然使用相同的 PSSnapin 基类。

要了解更多信息,请查看

PS > help about_modules

【讨论】:

  • “Snapin 安装程序必须破解注册表”这是否意味着您可以信任管理单元而不是模块?管理单元是否经过 Microsoft 验证?只是好奇
【解决方案2】:

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

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

【讨论】:

  • 用于 PowerShell 的 TFS Power Tools 实用程序也仍然作为管理单元实现。
  • 当您说“您没有安装模块”时,您忘记了必须首先将模块 xcopy 部署到当前个人的模块文件夹之一%USERPROFILE%\Documents 下的用户,或%WINDIR%\system32\WindowsPowerShell\v1.0\Modules 下的机器全局。
  • 部分正确。使用 Import-Module,您可以指定模块文件的绝对路径并加载它。
【解决方案3】:

这没有很好的记录,所以我的回答持保留态度。查看snapinmodules 的开发人员文档。简而言之,管理单元“只是”一个 .Net 组件,而模块可以包含脚本、组件等。

【讨论】:

    【解决方案4】:

    PSSnapin 提供了一种通过在受保护目录中安装 DLL 来保护程序集的方法,而 Module 则可以通过替换文件来播放。

    参考:MSDN Link for PSSnapin

    【讨论】:

      【解决方案5】:

      Add-PSSnapinImport-Module 用于在当前 PowerShell 会话中获取外部 3rd 方库(脚本文件/二进制文件/dll)。 模块比 PSSnapins 更容易使用。

      与 PSSnapin 模块相比的主要优势模块是,一旦添加了 PSSnapin,我们就无法从当前 PowerShell 会话中删除或卸载它。 但是可以使用 Remove-Module 手动从当前 PowerShell 会话中删除模块

      注意: PS 1.0 版引入的概念PSSnapin 和PS 2.0 版引入的模块。

      参考:- This

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        • 2011-01-12
        相关资源
        最近更新 更多