#!/snap/bin/powershell
<#
.SYNTAX         ./list-automatic-variables.ps1
.DESCRIPTION	lists PowerShell automatic variables
.LINK		https://github.com/fleschutz/PowerShell
.NOTES		Author:	Markus Fleschutz / License: CC0
#>

try {
	write-output ""
	write-output "PowerShell Automatic Variables"
	write-output "=============================="
	write-output "`$args            = $args"
	write-output "`$ConsoleFileName = $ConsoleFileName"
	write-output "`$Error[0]        = $($Error[0])"
	write-output "`$Event           = $Event"
	write-output "`$EventArgs       = $EventArgs"
	write-output "`$EventSubscriber = $EventSubscriber"
	write-output "`$ExecutionContext= $ExecutionContext"
	write-output "`$false           = $false"
	write-output "`$foreach         = $foreach"
	write-output "`$HOME            = $HOME"
	write-output "`$input           = $input"
	write-output "`$IsCoreCLR       = $IsCoreCLR"
	write-output "`$IsLinux         = $IsLinux"
	write-output "`$IsMacOS         = $IsMacOS"
	write-output "`$IsWindows       = $IsWindows"
	write-output "`$LastExitCode    = $LastExitCode"
	write-output "`$Matches         = $Matches"
	write-output "`$MyInvocation.PSScriptRoot  = $($MyInvocation.PSScriptRoot)"
	write-output "`$MyInvocation.PSCommandPath = $($MyInvocation.PSCommandPath)"
	write-output "`$NestedPromptLevel          = $NestedPromptLevel"
	write-output "`$null            = $null"
	write-output "`$PID             = $PID"
	write-output "`$PROFILE         = $PROFILE"
	write-output "`$PSBoundParameters = $PSBoundParameters"
	write-output "`$PSCmdlet        = $PSCmdlet"
	write-output "`$PSCommandPath   = $PSCommandPath"
	write-output "`$PSCulture       = $PSCulture"
	write-output "`$PSDebugContext  = $PSDebugContext"
	write-output "`$PSHOME          = $PSHOME"
	write-output "`$PSItem          = $PSItem"
	write-output "`$PSScriptRoot    = $PSScriptRoot"
	write-output "`$PSSenderInfo    = $PSSenderInfo"
	write-output "`$PSUICulture     = $PSUICulture"
	write-output "`$PSVersionTable.PSVersion = $($PSVersionTable.PSVersion)"
	write-output "`$PSVersionTable.PSEdition = $($PSVersionTable.PSEdition)"
	write-output "`$PSVersionTable.GitCommitId = $($PSVersionTable.GitCommitId)"
	write-output "`$PSVersionTable.OS = $($PSVersionTable.OS)"
	write-output "`$PSVersionTable.Platform = $($PSVersionTable.Platform)"
	write-output "`$PSVersionTable.PSCompatibleVersions = $($PSVersionTable.PSCompatibleVersions)"
	write-output "`$PSVersionTable.PSRemotingProtocolVersion = $($PSVersionTable.PSRemotingProtocolVersion)"
	write-output "`$PSVersionTable.SerializationVersion = $($PSVersionTable.SerializationVersion)"
	write-output "`$PSVersionTable.WSManStackVersion = $($PSVersionTable.WSManStackVersion)"
	write-output "`$PWD             = $PWD"
	write-output "`$Sender          = $Sender"
	write-output "`$ShellId         = $ShellId"
	write-output "`$StackTrace      = $StackTrace"
	write-output "`$switch          = $switch"
	write-output "`$this            = $this"
	write-output "`$true            = $true"
	exit 0
} catch {
	write-error "ERROR in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
	exit 1
}