我想在制作脚本时让生活更轻松。我正在盯着一个包含文件层次结构的小框架。问题是点源ps1脚本已经有其他文件点源来制动原始调用脚本中的范围。 它看起来像这样:
$var = "shpc0001"
. '.\loadvariables.ps1'
. '.\config\config.ps1'
echo $var
问题是test.ps1
尝试加载loadvariables.ps1
,因为它位于test.ps1
脚本旁边。
我该如何解决这个问题?
答案 0 :(得分:12)
管理具有相互依赖性的脚本集合的最简单方法是将它们转换为模块。此功能仅在2.0中可用,但它允许您将一组脚本分隔为具有声明的依赖项的独立组件。
以下是有关启动和运行模块的教程的链接
答案 1 :(得分:7)
正如Jared所说,模块是可行的方法。但是,由于您甚至可能在模块内部使用点源,因此最好使用完整路径(仍然可以在运行时计算)。
## Inside modules, you can refer to the module's location like so
. "$PSScriptRoot\loadvariables.ps1"
## Outside a module, you can do this
$ScriptRoot = Split-Path $MyInvocation.MyCommand.Path
. "$ScriptRoot\loadvariables.ps1"