2011-02-24 90 views
15

我要写一PowerShell脚本的Windows管理员,以帮助他们在涉及到Web应用程序的部署某些任务。当选择一个PowerShell模块的开发在PowerShell脚本

是否有任何理由,我应该赞成或排除的发展的PowerShell模块(名为.psm1)而不是做一个PowerShell脚本(名为.ps1)

参数,开发脚本

  • 简单:我的东西,使用的脚本是更容易一点和Windows管理员更简单,因为它并不需要安装的模块(但我可能是错误的,因为我不是Windows管理员!)。
  • 更快发展:开发一个模块需要更加仔细的编程方法内部曝光,它就像设计一个API的。因此必须更加严格。

参数开发模块

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

如果你知道PS脚本对于PS模块或每个选择的技术限制的共同使用的情况下,它可能会有所帮助。

+1

一个念头:创建代码时,将其创建为一个脚本;这样你就可以获得“更快的开发”效益。一旦你已经有了一个工作脚本,将它迁移到一个模块中(即复制功能,添加文档,通常确保它完全打包);通过这种方式,您可以在开发人员的思维模式下快速实现功能,然后在重构/重新包装以供重用时更改为架构师思维模式。 – JohnLBevan 2015-06-24 10:42:57

回答

17

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

在坚果壳,

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

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

8

我喜欢模块“隐藏”功能/变量,只导出我想要的那些能力。

+0

谢谢你,有趣的一点,尽管我认为你可以通过在其他函数中嵌套函数来在脚本中提供相同的行为。 – Olivier 2011-02-25 11:16:25

+1

确实如此,但是如果需要使用其他几个函数来使用“隐藏”功能,那么您会遇到困难。 – 2011-02-25 18:00:31