Loading custom functions in PowerShell

Powershell

Powershell 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

Solution 4 - Powershell

Here's how to load one from a specific path/directory:

. "C:\scripts\Function-Search-AD.ps1"

enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSean LongView Question on Stackoverflow
Solution 1 - PowershellmanojldsView Answer on Stackoverflow
Solution 2 - PowershellRohin SidharthView Answer on Stackoverflow
Solution 3 - PowershellmelMassView Answer on Stackoverflow
Solution 4 - PowershellKERRView Answer on Stackoverflow