我有一大批powershell代码,是在一个长期项目中编写的;这些脚本执行各种功能,其中大多数都以某种方式依赖于项目范围内的其他脚本。目前,这项工作由几个包含许多函数的文件组成。最初,为了使用这些脚本,所有脚本文件都被随意地点源到环境中。
然而,我最近了解到Powershell 2.0引入了模块,我希望以这种方式部署这些脚本。由于模块的内容都一起加载,我想将我的文件拆分开来,使每个脚本都有自己的文件,以帮助源代码控制。但是,我对脚本之间的连接还有点不清楚。
我做了一些测试,似乎将每个函数的Export-ModuleMember命令移到单独的.ps1文件中是可以的;这更像是函数声明它们自己的作用域,就像C#中的公共和私有作用域。然而,在这样做之后,我的.psm1文件除了这个之外什么都没有:
Get-ChildItem -recurse $psScriptRoot | where { $_.Extension -eq ".ps1" } | foreach { . $_.FullName }
这样做对吗?所有脚本都在使用点号源的情况下相互引用。它们是否应该改为使用相对于$psScriptRoot的位置来相互引用?
除了这两种方法,还有其他方法吗?有人可以提供建议吗?我对这些不是很了解。