【问题标题】:What are .ps1 files for in PowerShell modules?PowerShell 模块中的 .ps1 文件是什么?
【发布时间】:2013-09-01 12:41:22
【问题描述】:

我目前正在学习 PowerShell 模块。如果您使用的是 .psd1 清单文件,则可以选择使用 .ps1 脚本文件以及 .psm1 清单文件。为什么两者都需要?

我创建了一个包含两者的模块,其中 .psm1 设置为 RootModule 和 .ps1 设置在 ScriptsToProcess 中,我注意到了一些差异,但我不确定它们加起来是什么。

  • 如果我向两者都添加 Write-Output 语句,则在导入时会显示 .ps1 的输出,但会抑制 .psm1 的输出。 .psm1 显示写入警告。
  • 如果我为模块前缀运行 Get-Command prefix,则 .psm1 中的函数会以模块名称列出,而 .ps1 文件中的函数会以空白模块名称列出。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    清单中放置 Ps1 文件引用的部分决定了它们的执行方式。

    在你的情况下:

    • ScriptsToProcess 将在导入模块之前在调用者的环境中执行列出的 PowerShell 脚本。这让我认为它们是准备脚本。
    • 这是因为此处列出的文件并不包含函数;它应该是一个脚本。如果您希望您的模块可以访问其他功能,您有几个选择:

      1. 在 NestedModules 中列出它们
      2. 将它们包含在您的模块中
      3. 尝试在清单的导出部分的函数中列出它们。 (我没有尝试过这种方法,但我的理解是,无论函数位于何处,它都会按照您想要的方式工作。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2022-06-23
    • 2021-10-30
    • 2020-10-27
    相关资源
    最近更新 更多