Retrieving the parameters used to run a script
Using $MyInvocation
If you want to show the invocation line used to invoke a powershell script or function, you can use the automatic variable called $MyInvocation
and the property Line
to retrieve this information
$MyInvocation.Line
Here is an example, assume you have the following powershell script called MyInvocation.ps1
with following content:
PARAM(
$A,
$B,
$C
)
$myinvocation.line
If you execute the script using the following line:
.\MyInvocation.ps1 -A test -B test
It will output the following
.\MyInvocation.ps1 -A test -B test
As you can see, it is easy to retrieve the command used invoked with its parameters and values.
Using $PSCmdlet
If your script or function has the advanced features enabled, using [CmdletBinding()]
or [parameter()]
(on one of the parameters), you will be able to use $PSCmdlet.MyInvocation.Line
to retrieve the same information.
Example, same script as above but with the [CmdletBinding()]
[CmdletBinding()]
PARAM(
$A,
$B,
$C
)
$PSCmdlet.myinvocation.line
If I invoke the script using:
.\MyInvocation.ps1 -C test -B test
I will get the following output:
.\MyInvocation.ps1 -C test -B test
Note that $MyInvocation
is still available.
Leave a comment