Skip to main content
powershell/PSAvoidDefaultValueSwitchParameter is a PSScriptAnalyzer diagnostic emitted by tally for PowerShell snippets embedded in Dockerfiles.
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/PSAvoidDefaultValueSwitchParameter"] or by setting rules.powershell.PSAvoidDefaultValueSwitchParameter.severity = "warning" in .tally.toml.

Description

If your parameter takes only true and false, define the parameter as type [Switch]. PowerShell treats a switch parameter as true when it’s used with a command. If the parameter isn’t included with the command, PowerShell considers the parameter to be false. Don’t define [Boolean] parameters. You shouldn’t define a switch parameter with a default value of $true because this isn’t the expected behavior of a switch parameter.

How

Change the default value of the switch parameter to be $false or don’t provide a default value. Write the logic of the script to assume that the switch parameter default value is $false or not provided.

Examples

Problematic code

Correct code

More information

Source

This rule documentation is adapted from Microsoft’s PSScriptAnalyzer documentation for AvoidDefaultValueSwitchParameter, licensed under CC BY 4.0.