我想从文件导入外部函数,而不是将其转换为模块(我们有数百个每个函数文件,因此将它们视为模块过度使用) 。函数内部从文件到全局范围的点源函数
以下是代码说明。请注意,我在导入函数中添加了一些额外的逻辑,例如添加脚本根文件夹以及检查文件存在并抛出特殊错误,以避免需要这种导入的每个脚本中的代码重复。
C:\库\ Foo.ps1:
Function Foo {
Write-Host 'Hello world!'
}
C:\ InvocationTest.ps1:
# Wrapper func
Function Import-Function ($Name) {
# Checks and exception throwing are omitted
. "C:\Repository\$name.ps1"
# Foo function can be invoked in this scope
}
# Wrapped import
Import-Function -Name 'Foo'
Foo # Exception: The term 'Foo' is not recognized
# Direct import
. "C:\Repository\Foo.ps1"
Foo # 'Hello world!'
有什么绝招,以点源到全球范围内?
非常感谢你,这个不错的hach正在工作。如果你不介意的话,我添加了一些小修补程序来使其工作。 – 2013-03-03 19:52:23
不要介意。我只是想传达一个想法,不一定是一个完整的解决方案。 – mjolinor 2013-03-03 20:02:43
@AntonPurin你可以更新答案,包括你的'小修正'? – 2013-05-29 02:36:37