【发布时间】: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