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.' } } Get-ScriptDirectory
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.