2008-12-04 73 views
8

我听说powershell 2.0 CTP有模块,但我找不到很多示例代码或说明。我读过似乎在网上有什么小帮助...如何创建PowerShell 2.0模块?

但我只是不断收到“术语'添加模块'不被识别为cmdlet ...”当我尝试加载模块。

任何帮助将感激地收到!

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

+0

等待几个星期,你的愿望将实现CTP3。 – halr9000 2008-12-09 04:05:20

回答

9

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

+0

导入模块也不起作用。实际上,没有其中包含单词模块的命令: gcm | ?{$ _。Name.Contains(“Module”)} | fl名称 哦,那么我会等到CTP 3了解更多! – 2008-12-17 12:44:14

0

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

1

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

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

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

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

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

CTP3发货时应该有一些体面的文档。

希望能有所帮助。

Andy

3

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

假设你想创建一个名为MyModule的模块:

  1. 确保您已创建的文件夹%我的文档%\ WindowsPowershell \模块
  2. 创建内部模块文件夹叫做MyModule
  3. 把你的代码放在的文件里面MyModule和n ame文件MyModule.psm1
  4. 请记住使用Export-ModuleMember命令作为脚本文件中的最后一件事。 Export-ModuleMember -Function * -Alias *将导出的所有功能和别名
  5. 在您要使用的模块,使用命令Import-Module MyModule

默认情况下,PowerShell是配置为不从文件中运行任何类型的脚本,所以你需要修改脚本,安全设置。 Set-ExecutionPolicy Unrestricted会让你走,如果你不关心需要签名的脚本。