In my current project we provision large and complex Azure environments, subscriptions VMs, networking permissions and all that. Some of the scripts have many many parameters - so in a month it would be nice to see how the script were started and with what parameters. With the cmdlet start-transcript you get all the information what happens in the script as a nice log file. But unfortunately the parameters that were used to start the script are not in there. In this post, I show you how to easily add them to the transcript!
Let’s use the following script:
|
|
After starting this script you will have a nice transcript (yellow part), but it does not contain with what parameters the script was started:
Today I learned (TIL)
So today I learned that you can write them to the transcript with just a few lines:
Param(
[Parameter(Mandatory=$True, HelpMessage="The first parameter")]
[string]$Parameter1,
[Parameter(Mandatory=$True, HelpMessage="The second parameter")]
[string]$Parameter2
)
start-transcript
#Export the parameters
write-verbose "Parameters:"
foreach ($p in $PsBoundParameters.GetEnumerator())
{
write-verbose "`tParameter: $($p.Key) Value: $($p.Value)"
}
write-out "Do something"
Start-Sleep -Seconds 3
write-out "Everything worked out!"
Stop-Transcript
If you do this, you will have a nice transcript that contain the parameters (yellow part):
Why write-verbose you might ask? Then you have the choice when you start the script to log the parameters with -Verbose or to not log them if you dont need them. One little note: values of SecureStrings are not exported.
Powershell is awesome. You agree?
Share this post
Twitter
Facebook
LinkedIn
Email