PAYATHON 2026

PowerShell 如何调用同级目录中的脚本?

数据小陈

结论

可以。.. 表示上一级目录,因此可以从当前目录访问上一级目录中的 siblingfolder:

.\..\siblingfolder\mysuperscript.ps1 -param1 bla -param2 blabla -param3 blob

不过,这个相对路径是相对于 PowerShell 的当前工作目录解析的,不一定相对于正在运行的脚本所在目录。如果脚本从其他目录启动,可能会找不到目标文件。

根据当前工作目录调用

如果运行脚本时,当前工作目录就是调用脚本所在的目录,可以直接使用题目中的写法:

.\..\siblingfolder\mysuperscript.ps1 -param1 bla -param2 blabla -param3 blob

其中,. 表示当前工作目录,.. 表示它的父目录。

根据当前脚本的位置调用

如果要让路径始终相对于当前脚本的位置构造,可以使用 $PSScriptRoot。它表示当前脚本所在的目录:

$target = Join-Path (Split-Path $PSScriptRoot -Parent) 'siblingfolder\mysuperscript.ps1'
& $target -param1 bla -param2 blabla -param3 blob

Split-Path $PSScriptRoot -Parent 会取得当前脚本目录的父目录,Join-Path 则拼接出目标脚本的路径。调用运算符 & 用于执行变量中保存的脚本路径。

注意事项

题目中的写法能否成功,取决于启动脚本时的当前工作目录。如果脚本需要从不同目录启动,使用 $PSScriptRoot 构造路径通常更可靠。以上示例按普通脚本调用处理;若要把目标脚本加载到当前作用域,还需要使用点源语法,例如 . $target。这种方式与直接运行脚本的行为不同。

备注:内容仅供参考。