Finding Current Script Paths

by Jul 13, 2012

Here's a useful function that you can paste into your scripts. It will tell you the current location the script is executed from.

function Get-ScriptDirectory{
    $Invocation = (Get-Variable MyInvocation -Scope 1).Value
    try {
        Split-Path $Invocation.MyCommand.Path -ea 0
    catch {
        Write-Warning 'You need to call this function from within a saved script.'


Note that the function Get-ScriptDirectory only works from within a saved script. You cannot call it interactively, and you need to save the script in PowerShell ISE before you run it.

The function uses Get-Variable and accesses the built-in variable $MyInvocation from the parent scope (which is your script). If it was accessing $MyInvocation directly from within the function, it would return the caller of the function and not the script location.

Twitter This Tip! ReTweet this Tip!