The $MyInvocation automatic variable that contains an object with information about the current command, such as a script, function, or script block.
You can use the information in the object, such as the path and file name of the script ($MyInvocation.mycommand.path) or the name of a function ($myinvocation.mycommand.name) to identify the current command.
The script below demonstrates the use of MyInvocation, n.b. this must be run as a script not interactively at the command line:
#[test.ps1]
" Display the full pathname of this running script:"
$myinvocation.mycommand.path
# This will return something like C:\demo\test.ps1
"`n Display the directory only (using a small function):"
function Get-ScriptDirectory {
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
$dir = Get-ScriptDirectory
$dir
# This will return something like C:\demo
# Optional - more detailed information
# "Display ALL the properties of $myinvocation"
# $myinvocation
# "`n Display the TYPE of this built-in array variable"
# $myinvocation.GetType()
“Drive a nail home and clinch it so faithfully that you can wake up in the night and think of your work with satisfaction,- a work at which you would not be ashamed to invoke the Muse” ~ Henry David Thoreau
Automatic variables ($_, $Args etc)
Run a PowerShell script.
$PSScriptRoot