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

时间:2013-09-01 12:41:23

标签: powershell

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

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

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

1 个答案:

答案 0 :(得分:1)

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

在你的情况下:

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

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