2017-09-15 110 views
2

我为它创建了PowerShell模块MyUtil.psm1和清单文件MyUtil.psd1。在PSD1文件,它具有定义为防止名称冲突的导出函数的前缀:如何确保使用PowerShell模块清单(.psd1)

DefaultCommandPrefix = 'MyToolbox' 

这样,运行导入模块后\ MyUtil.psd1,在PSM1文件中像Get-Command功能会Get-MyToolboxCommand,一切都很好。但是如果有人运行导入模块。\ MyUtil.psm1直接导入psm1文件,则不会使用psd1文件。

如果我想防止这种情况,是否有任何简单的方法只允许导入相应的psd1清单文件,而不是该psm1文件?

+0

@ wp78de谢谢!请在你的帖子中看到我的评论。我在帖子中还加了几个词,希望能让我的问题更清楚。 – w2000

回答

0

您可以通过调用Test-ModuleManifest Cmdlet来测试模块清单。

Test-ModuleManifest MyUtil.psd1 

这确认了清单中描述的任何路径都是正确的。 确保您的模块清单位于包含您的模块的目录的顶层。

当您的模块被复制到另一个系统并导入时,PowerShell应该使用模块清单导入您的模块。
或者,您可以通过点击清单本身来调用Import-Module来直接测试您的模块清单。

Import-Module .\myModuleName.psd1 
+0

嗨@ wp78de感谢您的建议。但那不是我所问的。我的问题是“如何强制该模块的用户只导入psd1文件”。因为如果他们直接导入psm1文件,它会丢失我放入清单中的前缀和其他好东西。 – w2000