Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

relative path in Import-Module

I have directory structure that looks like this:

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

What i want to do is specify the relative path in Script2.ps1 to look for Script1.ps1 in the directory hirearchy.

This is what i tried in Script2.ps1:

Import-Module ../MasterScript/Script1.ps1 

but it does not work and says it cannot find the module.

If i say Import-Module C:\TFS\MasterScript\Script1.ps1, it works fine. What am i missing here?

like image 533
Asdfg Avatar asked Jan 17 '13 15:01

Asdfg


1 Answers

When you use a relative path, it is based off the currently location (obtained via Get-Location) and not the location of the script. Try this instead:

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

In PowerShell v3, you can use the automatic variable $PSScriptRoot in scripts to simplify this to:

# PowerShell v3 or higher  #requires -Version 3.0 Import-Module $PSScriptRoot\..\MasterScript\Script.ps1 
like image 132
Keith Hill Avatar answered Sep 28 '22 07:09

Keith Hill