在导入模块相对路径(relative path in Import-Module)

2019-08-07 04:50发布

我有一个看起来像这样的目录结构:

C:\TFS\MasterScript\Script1.ps1
C:\TFS\ChildScript\Script2.ps1

我想要做的就是指定Script2.ps1的相对路径来寻找Script1.ps1目录hirearchy。

这就是我想在Script2.ps1:

Import-Module ../MasterScript/Script1.ps1

但它不工作,并说,它无法找到该模块。

如果我说Import-Module C:\TFS\MasterScript\Script1.ps1 ,它工作正常。 我缺少的是在这里吗?

Answer 1:

当您使用相对路径,它是基于关闭当前位置(通过GET-位置获得),而不是脚本的位置。 试试这个:

$ScriptDir = Split-Path -parent $MyInvocation.MyCommand.Path
Import-Module $ScriptDir\..\MasterScript\Script.ps1

在PowerShell中V3,你可以使用自动变量$PSScriptRoot在脚本中这简化为:

# PowerShell v3 or higher

#requires -Version 3.0
Import-Module $PSScriptRoot\..\MasterScript\Script.ps1


Answer 2:

这为我工作:

$selfPath = (Get-Item -Path "." -Verbose).FullName
$dllRelativePath = "........"
$dllAbsolutePath = Join-Path $selfPath $dllRelativePath
Import-Module $dllAbsolutePath


Answer 3:

造成这种情况的新方法$PSScriptRoot

Import-Module $PSScriptRoot\Script1.ps1

可爱的小一行。



文章来源: relative path in Import-Module