我有一些powershell模块,其中包含需要从各种powershell脚本实例化的类。要从Powershell脚本访问类,我有如下语句:
using module "..\..\Library\Mymodule.psm1"
但是我不提前知道我的库在文件夹层次结构中相对于脚本的位置。
我们不想使用标准的Powershell模块文件夹,因为这些类在源代码控制之下,并且部署到用户的文件夹将是噩梦。
对于Google来说,这是一个非常困难的话题,因为在任何地方都使用“ using”!
尝试为同一文件提供多个可能的位置,但是我们当然会为不存在的备用位置得到一个错误:
未加载指定的模块'C:... Mymodule.psm1',因为在任何模块目录中均未找到有效的模块文件。 在第0行char:0
using module "..\..\Library\Mymodule.psm1"
using module "..\Library\Mymodule.psm1"
using module ".\Library\Mymodule.psm1"
但是我宁愿运行一个函数来首先确定正确的模块路径,然后再使用类似的东西
using module "$foundModulePath"
有没有办法动态设置模块的路径,然后“使用”它?
答案 0 :(得分:0)
我会在一个单独的存储库中对模块进行版本控制,并在运行时在工作空间内编写该存储库的克隆函数。
在该仓库中使用标签-将使我能够控制为每个脚本加载的模块的版本。 这将使模块的开发成为可能,即使脚本仍必须使用旧版本,并且我不想因为修改了依赖关系而“花时间”重新编写模块。
第2个想法。
Gradle在处理大型项目中的混乱依赖列表方面非常出色。
您可以构建一个gradle脚本来准备工作空间,然后从其中开始执行powershell脚本。
See Link here