【问题标题】:Exporting PS Members from Module Fails从模块导出 PS 成员失败
【发布时间】:2016-12-20 22:10:54
【问题描述】:

我有一个具有多种功能的 psm1 模块。我只想暴露一些功能,所以我使用了“Export-ModuleMember -Function”,一切都很好。

现在我想添加一个清单,所以我删除了 Export-ModuleMember cmdlet,并将函数名称放在 psd1 文件的 FunctionsToExport 部分下。

当我导入模块时,我可以通过制表符完成功能,但是当我尝试使用它们时,ps 说:

Test-Function:术语“Test-Function”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。

我也尝试将 Export-ModuleMember -Function * 放入 psm1,但这没有帮助。

psm1 和 psd1 文件名称相同,并且位于模块的根目录中。

想法?谢谢。

【问题讨论】:

  • 它没有按照建议进行缓存。这是预期的行为。这实际上是一个重复的问题,但我在移动设备上,现在找不到 dup 目标。

标签: powershell


【解决方案1】:

我找到了答案。我忘记取消注释 RootModule 节点。一旦我这样做了(并将 module.psm1 作为值),导出的命令就会出现在“Get-Module module”输出中。

【讨论】:

    【解决方案2】:

    我怀疑这里涉及到 PowerShell 缓存机制。尝试运行:

    Get-Module -ListAvailable -Refresh
    

    我推荐由 PowerShell MVP Tobias Weltner 编写的 very good article on that subject

    【讨论】:

    • 我认为这与缓存无关。清单文件到位后,Get-Module(在功能的选项卡完成后)将类型显示为清单,并且没有导出的命令。如果我删除清单文件并再次删除/导入模块,我会看到类型是脚本并且我拥有导出命令列表中的所有函数(因为我在 psm1 中有 Export-ModuleMember -Function *)。跨度>
    • 我应该补充一点,清单文件有“FunctionsToExport = 'Test-Function', 'Test-Function2'”
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2017-05-20
    • 2017-05-07
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多