我有一个模块xy,它有最终用户的几个函数和几个由函数调用但不是最终用户调用的内部帮助函数。
Get-Command -Module xy -CommandType function
列出了我的模块文件夹中的所有功能(例如get-foo
和get-foo_helper
)
有没有办法隐藏get-foo_helper
函数给正在使用的最终用户:
Get-Command -Module tcaps -CommandType function
答案 0 :(得分:40)
我做的一件事是对我想要导出的函数使用动词 - 名词命名约定,但在辅助函数中省略连字符。
然后,export-modulemember *-*
只负责导出您要导出的内容。
答案 1 :(得分:35)
只需将Export-ModuleMember添加到模块的底部即可。
假设您的模块中有以下功能:
New-Function0
New-Function1
New-Function2
New-HelperFunction0
将这些行添加到模块文件的底部:
Export-ModuleMember -function New-Function0
Export-ModuleMember -function New-Function1
Export-ModuleMember -function New-Function2
在此模块上运行Import-Module时,它只会导入Export-ModuleMember定义的函数。
现在假设您还想为New-Function1导出别名。只需将其添加到模块的末尾:
Export-ModuleMember -alias nf1
现在使用Import-Module时,它将加载您定义的函数,以及New-Function1的别名(nf1)。
答案 2 :(得分:4)
您可以使用Export-ModuleMember或创建Module Manifest并指定导出的命令。您可以使用New-ModuleManifest创建清单文件。
答案 3 :(得分:3)
在许多情况下,声明的函数可以用scriptblock替换(即匿名函数)。