【问题标题】:When to choose development of a PowerShell Module over PowerShell Script何时选择开发 PowerShell 模块而不是 PowerShell 脚本
【发布时间】:2011-02-24 10:13:09
【问题描述】:

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

我有什么理由支持或排除开发 PowerShell 模块 (.psm1) 而不是开发 PowerShell 脚本 (.ps1)

开发脚本的参数

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

开发模块的参数

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

如果您了解 PS 脚本与 PS 模块的常见用例,或每种选择的技术限制,可能会有所帮助。

【问题讨论】:

  • 一个想法:在创建代码时将其创建为脚本;这样你就可以获得“更快的发展”的好处。一旦你有了一个工作脚本,将它迁移到一个模块(即跨函数复制,添加文档,通常确保它被完全打包);通过这种方式,您可以在以开发人员思维方式快速运行功能,然后在重构/重新打包以供重用时转变为架构师思维方式。

标签: powershell module windows-scripting


【解决方案1】:

要了解模块可以为您做什么,请阅读以下内容:https://docs.microsoft.com/en-us/powershell/scripting/developer/module/writing-a-windows-powershell-module?view=powershell-7.1

简而言之,

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢你,有趣的一点,虽然我认为你可以通过在其他函数中嵌套函数来在脚本中提供相同的行为。
    • 确实如此,但是如果“隐藏”功能需要被其他几个功能使用,那你就有点卡住了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多