I am a beginner Powershell user. I am writing some script files (.ps1)
I would like to determine how my script was invoked:
Was is the "main" script or was it dot sourced from another file?
In python, I would use something like:
if __name__ == "__main__":
Is there something similar in PowerShell?
Update
After reading the answers, I am using the following at the end of my .ps1 file:
if ($MyInvocation.InvocationName -ne '.')
{
# do "main" stuff here
}
Any answers that include how this could fail are welcome.
It appears this is a duplicate question, I just didn't use the right search terms: Determine if PowerShell script has been dot-sourced
If you're wanting to know how it was invoked, have a look at the $myinvocation automatic variable.
If you just want to test if you're in the global scope:
Try {if (get-variable args -scope 1){$true}}
Catch {$false}
should return $true if you're running in a child scope. If you're already in the global scope, there is no parent scope and it will throw an error and return $false.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With