首页 文章

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

提问于
浏览
2

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

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

  • 如果我向两者添加Write-Output语句,则在导入时,输出将显示为.ps1,但会针对.psm1进行抑制 . 显示.psm1的写警告 .

  • 如果我运行模块前缀的Get-Command前缀,则会列出.psm1中的函数和模块名称,而.ps1文件中的函数会列出一个空白模块名称 .

1 回答

  • 1

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

    在你的情况下:

    • 在导入模块之前,ScriptsToProcess将在调用者的环境中执行列出的PowerShell脚本 . 这让我认为它们是准备脚本 .

    • 这是因为此处列出的文件并不包含函数;它意味着是一个脚本 . 如果您希望模块可以访问其他功能,您可以选择以下几种方法:

    • 在NestedModules中列出它们

    • 将它们包含在您的模块中

    • 尝试将它们列在清单导出部分的函数中 . (我没有尝试过这种方法,但我的理解是,无论函数位于何处,它都会以你想要的方式工作 . )

相关问题