Skip to main content

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/PSPossibleIncorrectUsageOfAssignmentOperator is a PSScriptAnalyzer diagnostic emitted by tally for PowerShell snippets embedded in Dockerfiles.
PropertyValue
SeverityInformation
CategoryPSScriptAnalyzer
Auto-fixNo

Description

In many programming languages, the equality operator is denoted as == or =, but PowerShell uses -eq. Therefore, it can easily happen that the wrong operator is used unintentionally. This rule catches a few special cases where the likelihood of that is quite high. The rule looks for usages of == and = operators inside if, else if, while and do-while statements but it does not warn if any kind of command or expression is used at the right hand side as this is probably by design.

Examples

Problematic code

if ($a = $b)
{
    ...
}
if ($a == $b)
{

}

Correct code

if ($a -eq $b) # Compare $a with $b
{
    ...
}
if ($a = Get-Something) # Only execute action if command returns something and assign result to variable
{
    Do-SomethingWith $a
}

Implicit suppression using Clang style

There are some rare cases where assignment of variable inside an if statement is by design. Instead of suppressing the rule, one can also signal that assignment was intentional by wrapping the expression in extra parenthesis. An exception for this is when $null is used on the LHS because there is no use case for this.
if (($shortVariableName = $SuperLongVariableName['SpecialItem']['AnotherItem']))
{
    ...
}

Source

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