如何创建powershell 2.0模块?

时间:2008-12-04 17:10:46

标签: powershell

我听说过powershell 2.0 CTP有模块,但我找不到很多示例代码或指令。我已经阅读了似乎在网上有什么帮助......

但是当我尝试加载模块时,我只是不断地说“术语'添加模块'不被识别为cmdlet ......”

感谢任何帮助!

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

5 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

我不是Powershell专家,但这是我刚刚使用PowerShell 2.0 RTM想出来的。

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

  1. 确保您已创建文件夹%My Documents%\ WindowsPowershell \ Modules
  2. 模块中创建名为 MyModule
  3. 的文件夹
  4. 将您的代码放在 MyModule 中的文件中,并将文件命名为 MyModule.psm1
  5. 请记住使用Export-ModuleMember命令作为脚本文件中的最后一项。 Export-ModuleMember -Function * -Alias *将导出所有函数和别名
  6. 在要使用模块的脚本中,使用命令Import-Module MyModule
  7. 默认情况下,Powershell配置为不从文件运行任何类型的脚本,因此您需要更改安全设置。如果您不关心需要签名的脚本,Set-ExecutionPolicy Unrestricted会帮助您。

答案 2 :(得分:2)

答案 3 :(得分:1)

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

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

模块将允许您作为作者构建脚本,并且只为模块的最终用户提供某些功能/变量。

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

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

当CTP3发货时,应该有一些不错的文件。

希望有所帮助。

安迪

答案 4 :(得分:0)

Windows PowerShell v2.0:TFM(sapienpress.com)在其中一章中包含信息和示例。它可以作为电子书使用,随着新CTP的发布而更新。我还在ConcentratedTech.com上发表了关于它们的博客,并在PowerShellCommunity.org上讨论过它们。