【问题标题】:How do I create powershell 2.0 modules?如何创建 powershell 2.0 模块?
【发布时间】:2010-07-28 19:52:41
【问题描述】:

我听说 powershell 2.0 CTP 有模块,但我找不到太多示例代码或说明。我已经阅读了似乎在线的一些小帮助......

但当我尝试加载模块时,我不断收到“‘Add-Module’一词未被识别为 cmdlet...”。

任何帮助将不胜感激!

编辑(2010 年 7 月) 请注意,此问题基于 powershell 2.0 CTP,因此已过时一年半!有关 powershell 2.0 RTM 的帮助,请参阅 Samuel Jack 的回答。

【问题讨论】:

  • 等待几周,CTP3 将实现您的愿望。

标签: powershell


【解决方案1】:

在 Win7 版本中,Add-Module 消失了。新的 cmdlet 是 Import-Module。创建模块的最简单方法是将 PS1 文件重命名为 PSM1 文件。从那里你可以做各种各样的事情,包括模块清单。

【讨论】:

  • Import-Module 也不起作用。事实上,没有包含单词模块的命令:gcm | ?{$_.Name.Contains("模块")} | fl name 哦,好吧,我会等到 CTP 3 了解更多信息!
【解决方案2】:

我不是 Powershell 专家,但这是我刚刚使用 PowerShell 2.0 RTM 发现的。

假设您要创建一个名为 MyModule 的模块:

  1. 确保您已创建文件夹 %My Documents%\WindowsPowershell\Modules
  2. Modules 中创建一个名为 MyModule 的文件夹
  3. 将您的代码放入 MyModule 内的文件中,并将文件命名为 MyModule.psm1
  4. 请记住使用 Export-ModuleMember 命令作为脚本文件中的最后一件事。 Export-ModuleMember -Function * -Alias * 将导出所有函数和别名
  5. 在要使用模块的脚本中,使用命令Import-Module MyModule

默认情况下,Powershell 配置为不从文件运行任何类型的脚本,因此您需要更改安全设置。如果您不担心需要签名的脚本,Set-ExecutionPolicy Unrestricted 将助您一臂之力。

【讨论】:

    【解决方案3】:

    【讨论】:

      【解决方案4】:

      模块有望解决一些问题。现在,我们可以使用点源将函数、变量和脚本放入 PowerShell 会话的全局范围内。

      问题在于,这可能会使用最终用户可能不想要/不需要的各种全局变量和辅助函数污染您的会话。

      模块将允许您作为作者构建脚本,并且仅使模块的最终用户可以使用某些函数/变量。

      它们也基本上取代了 PSSnapin 的概念。您可以使用 Add-Module Some.dll 添加包含 cmdlet 的程序集。

      真正酷的是所谓的模块清单。这是一个哈希表,基本上指定了各种依赖项以及作者、名称、GUID 标识符和版本号。当用户加载具有模块清单的模块时,它将检查所有依赖项并运行模块作者认为必要的任何脚本。

      CTP3 发布时应该有一些关于这些的不错的文档。

      希望能有所帮助。

      安迪

      【讨论】:

        【解决方案5】:

        Windows PowerShell v2.0:TFM (sapienpress.com) 在其中一章中有信息和示例。它以电子书的形式提供,随着新 CTP 的发布而更新。我还在 ConcentratedTech.com 上发布了有关它们的博客,并且在 PowerShellCommunity.org 的论坛中也有关于它们的讨论。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-06
          • 2016-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-11
          相关资源
          最近更新 更多