Scopes and variables
PowerShell uses scopes to limit access to variables (and other items, such as functions). Scopes are layered one on top of another; child scopes inherit from parent scopes. Parent scopes cannot access variables created in child scopes.
There are three named scopes:
- Global
- Script
- Local
Global is the topmost scope; it is the scope the prompt in the console uses and is available to all child scopes.
The Script scope, as the name suggests, is specific to a single script. Script-scoped items are available to all child scopes (such as functions) within that script. The Script scope is also available in modules, making it an ideal place to store variables that should be shared within a module.
Local is the current scope and is therefore relative. In the console, the Local scope is also the Global scope. In a script, the Local scope is the Script scope. Functions and ScriptBlock
also have a Local scope of their own.