Powershell:包含另一个包含的脚本?

时间:2011-07-29 14:36:28

标签: powershell

我想在制作脚本时让生活更轻松。我正在盯着一个包含文件层次结构的小框架。问题是点源ps1脚本已经有其他文件点源来制动原始调用脚本中的范围。 它看起来像这样:

\设置\ loadvariables.ps1

$var = "shpc0001"

\设置\ config.ps1

. '.\loadvariables.ps1'

\ test.ps1

. '.\config\config.ps1'
echo $var

问题是test.ps1尝试加载loadvariables.ps1,因为它位于test.ps1脚本旁边。 我该如何解决这个问题?

2 个答案:

答案 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"