何时选择通过PowerShell脚本开发PowerShell模块

时间:2011-02-24 10:13:10

标签: powershell module windows-scripting

我即将为Windows管理员编写PowerShell脚本,以帮助他们完成与部署Web应用程序相关的某些任务。

我是否应该支持或排除开发 PowerShell模块(.psm1)而不是执行 PowerShell脚本(.ps1)

开发脚本的论据

  • 简单:我认为使用脚本对Windows管理员来说更简单,更直接,因为它不需要安装模块(但我可能错了,因为我不是Windows联系!)。
  • 更快的开发:开发模块需要对内部方法进行更仔细的编程。这就像设计API一样,因此必须更严格。

开发模块的论据

  • 可重用性:这是第一个想到的事情:如果管理员想要将我们的脚本集成到他自己的脚本中,那么他可能更容易重用一个暴露一个(或几个)的模块)cmdlet而不是调用我们的脚本?
  • ...

如果你知道PS脚本与PS模块的常见用例,或者每种选择的技术限制,它可能会有所帮助。

2 个答案:

答案 0 :(得分:21)

要了解哪些模块可以为您做什么,请阅读:http://msdn.microsoft.com/en-us/library/dd878310(v=vs.85).aspx

在坚果壳中,

  

Windows PowerShell模块允许您将Windows PowerShell代码分区,组织和抽象为自包含,可重用的单元。使用这些可重用的单元,管理员,脚本开发人员和cmdlet开发人员可以轻松地与其他人共享他们的模块。脚本开发人员还可以重新打包第三方模块以创建基于脚本的自定义应用程序。与其他脚本语言(如Perl和Python)中的模块类似,模块支持生产就绪的脚本解决方案,这些解决方案使用可重复使用的可再发行组件,还具有使您能够重新打包和抽象多个组件以创建自定义解决方案的额外好处。

如果您的脚本已经具有功能而且不仅仅是为了执行单个任务而编写,您只需将其重命名为.PSM1即可将其转换为模块。如果你没有使用功能,当然除了去.ps1别无选择。在这种情况下,每个.ps1将用于执行单个任务。在共享我与其他人编写的脚本时,我总是喜欢模块。

答案 1 :(得分:12)

我喜欢能够“隐藏”功能/变量并只导出我想要的功能的模块。