Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nível de gravidade: Informação
Descrição
Esta regra deteta quando as instruções condicionais usam = ou == substituem o operador de igualdade PowerShell (-eq). A regra procura usos de == e = operadores dentro ifde , elseif, while, e do-while instruções . No PowerShell, = representa o operador de atribuição e -eq representa o operador de comparação de igualdade.
Em muitas linguagens de programação, == representa o operador de comparação de igualdade. Quando defines == numa expressão PowerShell, incluindo instruções condicionais, o PowerShell gera um erro porque == não é uma sintaxe válida do PowerShell. Esta regra sinaliza sempre os usos de == em instruções condicionais. No entanto, não sinaliza os usos de = quando o lado direito do condicional utiliza comandos ou expressões.
Nestes casos, é provável que a utilização do operador de atribuição seja intencional. Esta construção é frequentemente usada para atribuir de forma concisa um valor à variável ou propriedade do lado esquerdo e verificar se o valor atribuído é avaliado como verdadeiro.
Supressão implícita usando o estilo Clang
Existem alguns casos raros em que atribuir uma variável dentro de uma if instrução é intencional.
Em vez de suprimir a regra, pode sinalizar que a tarefa é intencional envolvendo a expressão com parênteses extra. Aplica-se uma exceção quando $null é usada do lado esquerdo porque não há um caso de uso para isso. Por exemplo:
if (($shortVariableName = $SuperLongVariableName['SpecialItem']['AnotherItem'])) {
...
}
Exemplo
Não conforme
if ($a = $b)
{
...
}
if ($a == $b)
{
}
Compliant
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
}