【问题标题】:Powershell module function not visible in Get-ModulesPowershell 模块功能在 Get-Modules 中不可见
【发布时间】:2018-07-06 03:08:25
【问题描述】:

我有一个包含单个函数的简单 powershell 模块,它的精简版如下:

function My-Func
{
.
.
.
} 
Export-ModuleMember -Function 'My-Func'

我的清单文件包含一行显式导出:

FunctionsToExport = "My-Func"

所有内容都通过 Publish-Module 上传到 powershell 库没有任何问题,然后当我安装它并运行 Get-Module 时,我在输出的导出命令列中看不到该功能,当我尝试调用函数 powershell 告诉我它不存在。

我的模块有一个 psm1 文件和一个 psd1 清单,由于某种原因,当我只看到 Manifest 作为模块类型时,我猜我需要查看脚本?

有什么想法吗?

【问题讨论】:

  • 我认为您需要指定数组中的函数,即使只有一个:FunctionsToExport = @('My-Func')。使用New-ModuleManifest 获取一个干净的示例清单文件
  • 当我执行Get-Module时,出现的模块类型是manifest是否正确?还是应该是脚本?
  • 我创建了一个新的清单文件并在一个数组中指定了导出的函数,不幸的是这没有任何区别。
  • FunctionsToExport 这样的字段可以很好地处理标量——它只是将标量自动转换为数组。但始终使用数组是最佳实践,因为它使以后更新清单更容易。关于未显示的功能,如果模块类型为Manifest,那么听起来您还没有将RootModule 属性设置为指向.psm1 文件。如果清单正确,则模块类型应为Script
  • Bruce - 设置 RootModule 成功了,如果你能提供这个作为答案,我会接受它作为答案。

标签: powershell


【解决方案1】:

在您的 .psm1 中: 删除 Exported-ModuleMember 行

在您的 .psd1 中: RootModule = 'yourmodule.psm1' FunctionsToExport = @('function1','function2')

psd1 文件 FunctionsToExport 的工作方式类似于 Exported-ModuleMember 命令。这是一种从一个集中式文件中定义事物的更简洁的方式。

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 2020-05-09
    • 2015-12-04
    • 1970-01-01
    • 2022-08-04
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多