> ## Documentation Index
> Fetch the complete documentation index at: https://tally.wharflab.com/llms.txt
> Use this file to discover all available pages before exploring further.

# powershell/PSAvoidGlobalVars

> No Global Variables

`powershell/PSAvoidGlobalVars` is a PSScriptAnalyzer diagnostic emitted by tally for PowerShell snippets embedded in Dockerfiles.

| Property | Value             |
| -------- | ----------------- |
| Severity | Warning           |
| Category | PSScriptAnalyzer  |
| Default  | Disabled in tally |
| Auto-fix | No                |

<Note>
  tally disables this rule by default for Dockerfile `RUN` snippets because a `RUN` executes
  statements inline rather than defining cmdlets, parameters, or modules with external callers. Re-enable it with
  `include = ["powershell/PSAvoidGlobalVars"]` or by setting
  `rules.powershell.PSAvoidGlobalVars.severity = "warning"` in `.tally.toml`.
</Note>

## Description

A variable is a unit of memory in which values are stored. PowerShell controls access to variables,
functions, aliases, and drives through a mechanism known as scoping. Variables and functions that
are present when PowerShell starts have been created in the global scope.

Globally scoped variables include:

* Automatic variables
* Preference variables
* Variables, aliases, and functions that are in your PowerShell profiles

To understand more about scoping, see `Get-Help about_Scopes`.

## How

Use other scope modifiers for variables.

## Examples

### Problematic code

```powershell theme={null}
$Global:var1 = $null
function Test-NotGlobal ($var)
{
    $a = $var + $var1
}
```

### Correct code

```powershell theme={null}
$var1 = $null
function Test-NotGlobal ($var1, $var2)
{
    $a = $var1 + $var2
}
```

## Source

This rule documentation is adapted from Microsoft's PSScriptAnalyzer documentation for
[AvoidGlobalVars](https://github.com/MicrosoftDocs/PowerShell-Docs-Modules/blob/main/reference/docs-conceptual/PSScriptAnalyzer/Rules/AvoidGlobalVars.md),
licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
