PowerShell ISE 3 and later
For documentation purposes, you may want to get a list of all variables that a PowerShell script uses.
Here is a function called Get-Variable:
function Get-Variable { $token = $null $errors = $null $ast = [System.Management.Automation.Language.Parser]::ParseInput($psise.CurrentFile.Editor.Text, [ref] $token, [ref] $errors) # not complete, add variables you want to exclude from the list: $systemVariables = '_', 'null', 'psitem', 'true', 'false', 'args', 'host' $null = $ast.FindAll({ $args[0] -is [System.Management.Automation.Language.CommandAst] }, $true) $token | Where-Object { $_.Kind -eq 'Variable'} | Select-Object -ExpandProperty Name | Where-Object { $systemVariables -notcontains $_ } | Sort-Object -Unique }
Simply load a script into the built-in ISE editor, then from the interactive console, run Get-Variable.
You will get a sorted list of all variables used by the currently opened script.
If you replace “$psise.CurrentFile.Editor.Text” by a variable that contains script code, you can run this function outside the ISE editor, as well. Simply use Get-Content to load the contents of any script into a variable, and then use this variable in place of the code above.