Loading custom functions in PowerShell
PowershellPowershell Problem Overview
I've got some additional functions that I've defined in an additional PowerShell script file, that I'm trying to load in a main .ps1 file. However, when I call the .ps1 file from the PowerShell prompt it doesn't seem to run through those commands.
In the following code example, build_functions.ps1 has code that defines various custom functions. If I run the file separately (for example, running it by itself and then running through the primary script) it works fine. Build_builddefs.ps1 contains a number of variables that also need to be populated prior to running the primary script.
At the beginning of my primary script I have this:
.\build_functions.ps1
.\build_builddefs.ps1
However, these don't seem to be run, because the primary script fails when it tries to execute the first custom function. What am I doing wrong?
Powershell Solutions
Solution 1 - Powershell
You have to dot source
them:
. .\build_funtions.ps1
. .\build_builddefs.ps1
Note the extra .
This heyscriptingguy
article should be of help - How to Reuse Windows PowerShell Functions in Scripts
Solution 2 - Powershell
I kept using this all this time
Import-module .\build_functions.ps1 -Force
Solution 3 - Powershell
KERR's answer is IMO the only "valid" one.
Relative paths given like in most answers won't resolve from the script's path but from PWD
...
Here is how to load relative files:
$parent_dir = Split-Path $MyInvocation.MyCommand.Path
. $parent_dir\Scripts\prompt.ps1
. $parent_dir\Scripts\aliases.ps1
. $parent_dir\Scripts\isoTools.ps1
You can find more informations about Automatic Variable here