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