powershell - PowerShell 模块中的内部函数

标签 powershell module

我正在编写一个模块,并且有一些我不想公开的辅助函数,但我确实希望在内部可以使用模块函数。我的目录结构如下:

root\
..Private
....Invoke-PrivateTest.ps1
....private.psd1
....private.psm1
..Public
....Get-Something.ps1
....Public.psd1
....Public.psm1
..test.psd1

我已经在 github 上设置了一个存储库 https://github.com/jpbruckler/test其中包含所有模块文件。

我期望的行为是 Get-Something 是一个公共(public)函数。运行 Get-Command -Module Test 时应该列出它。相反,Invoke-PrivateTest 不应出现在该命令的输出中。

当调用Get-Something时,它应该输出文本Invoke-PrivateTest called。相反,我收到一条错误,指出命令 Invoke-PrivateTest 不存在。

我在 test.psd1 中明确指出,仅导出 Get-Something 函数。

私有(private)模块和公共(public)模块都是通过 test.psd1 中的 NestedModules 属性调用的。任何帮助或指示将不胜感激。

最佳答案

除非您有其他原因将代码放入单独的(子)模块中,否则我会将其保存在一个文件夹中并控制通过函数名称导出的内容。对公共(public)函数的名称使用“官方”符号 ( <Verb>-<Noun> ),并省略私有(private)函数名称中的连字符 ( <Verb><Noun> )。这样您就可以在全局 .psd1 中导出公共(public)函数,如下所示:

FunctionsToExport = '*-*'

关于powershell - PowerShell 模块中的内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978785/

相关文章:

android - 避免 Android Studio 模块中的代码重复

javascript - 召唤依赖注入(inject)并调用模块内的方法/函数

javascript - 如何使用curl.js加载对象?

python - 从同一级别的另一个模块导入 Python 模块

Powershell 从字符串中获取数字

windows - 在dockerfile中多次切换转义字符

c - 如何检查是否在c中插入了内核模块?

powershell - 用户配置文件名称和大小进入CSV文件

powershell - 适用于PowerShell BizTalk的esbimportutil.exe的替代

xml - 在 Powershell 中添加回车符以手动漂亮地打印大型 XML 文件