Powershell可以对动态模块路径“使用”语句吗?

时间:2019-09-26 05:47:45

标签: powershell dynamic directory using

我有一些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"

有没有办法动态设置模块的路径,然后“使用”它?

1 个答案:

答案 0 :(得分:0)

我会在一个单独的存储库中对模块进行版本控制,并在运行时在工作空间内编写该存储库的克隆函数。

在该仓库中使用标签-将使我能够控制为每个脚本加载的模块的版本。 这将使模块的开发成为可能,即使脚本仍必须使用旧版本,并且我不想因为修改了依赖关系而“花时间”重新编写模块。

第2个想法。 Gradle在处理大型项目中的混乱依赖列表方面非常出色。
您可以构建一个gradle脚本来准备工作空间,然后从其中开始执行powershell脚本。 See Link here