powershell - PowerShell 模块中的 .ps1 文件是什么?

标签 powershell

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

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

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

    您放置对 Ps1 文件的引用的 list 部分决定了它们的执行方式。

    在你的情况下:

  • ScriptsToProcess 将在导入模块之前在调用者的环境中执行列出的 PowerShell 脚本。这让我认为它们是准备脚本。
  • 这是因为此处列出的文件并不包含函数;它应该是一个脚本。如果您希望模块可以访问其他功能,您有几个选择:
  • 在 NestedModules
  • 中列出它们
  • 将它们包含在您的模块中
  • 尝试在 list 的导出部分的函数中列出它们。 (我没有尝试过这种方法,但我的理解是,无论函数位于何处,它都会按照您想要的方式工作。)
  • 关于powershell - PowerShell 模块中的 .ps1 文件是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558540/

    相关文章:

    powershell - Post Build PowerShell 脚本不包括已安装的模块

    networking - 在 PowerShell 中检查网络服务器上的 IP 地址开关的好方法是什么?

    powershell - Jenkins Powershell 输出

    powershell - 为什么此 PowerShell &符号命令中的参数被错误解释?

    powershell - 如何使用 PowerShell 搜索文件夹

    arrays - 输出到CSV包含逗号

    powershell - 使用PoSH取值,奇怪的结果

    powershell - 如何使用Powershell更改DNS设置

    excel - 从 Windows 服务应用程序运行 Excel 宏时出错