prosource

가져오기-모듈의 상대 경로

probook 2023. 8. 1. 20:38
반응형

가져오기-모듈의 상대 경로

디렉토리 구조는 다음과 같습니다.

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

내가 하고 싶은 것은 디렉토리 계층 구조에서 Script1.ps1을 찾기 위해 Script2.ps1의 상대 경로를 지정하는 것입니다.

Script2.ps1에서 시도한 내용은 다음과 같습니다.

Import-Module ../MasterScript/Script1.ps1

하지만 작동하지 않고 모듈을 찾을 수 없다고 말합니다.

라고 하면Import-Module C:\TFS\MasterScript\Script1.ps1잘 작동합니다.여기서 내가 뭘 놓쳤나요?

상대 경로를 사용할 경우 스크립트의 위치가 아닌 현재 위치(Get-Location을 통해 획득)를 기반으로 합니다.대신 사용해 보십시오.

$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

이를 위한 새로운 방법은$PSScriptRoot

Import-Module $PSScriptRoot\Script1.ps1

멋진 작은 라이너.

이것은 저에게 효과가 있었습니다.

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

추가할 수 있습니다.using module ..\path\to\module모든 PowerShell 스크립트 파일의 맨 위에 있습니다.

경로는 항상 사용 문을 입력한 스크립트에 상대적입니다.

참고: 항상 백슬래시를 경로 구분 기호로 사용합니다.리눅스에서도.

언급URL : https://stackoverflow.com/questions/14382579/relative-path-in-import-module

반응형