我目前正在学习PowerShell模块 . 如果您使用的是.psd1清单文件,则可以选择使用.ps1脚本文件以及.psm1 manfiest文件 . 你为什么需要两个?
我用两者创建了一个模块,将.psm1设置为RootModule,在ScriptsToProcess中设置了.ps1,我注意到了一些差异,但我不确定它们是什么加起来的 .
-
如果我向两者添加Write-Output语句,则在导入时,输出将显示为.ps1,但会针对.psm1进行抑制 . 显示.psm1的写警告 .
-
如果我运行模块前缀的Get-Command前缀,则会列出.psm1中的函数和模块名称,而.ps1文件中的函数会列出一个空白模块名称 .
1 回答
清单中放置对Ps1文件的引用的部分决定了它们的执行方式 .
在你的情况下:
在导入模块之前,ScriptsToProcess将在调用者的环境中执行列出的PowerShell脚本 . 这让我认为它们是准备脚本 .
这是因为此处列出的文件并不包含函数;它意味着是一个脚本 . 如果您希望模块可以访问其他功能,您可以选择以下几种方法:
在NestedModules中列出它们
将它们包含在您的模块中
尝试将它们列在清单导出部分的函数中 . (我没有尝试过这种方法,但我的理解是,无论函数位于何处,它都会以你想要的方式工作 . )