Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nível de gravidade: de informações
Descrição
Essa regra detecta quando instruções condicionais usam = ou == em vez do operador de igualdade do PowerShell (-eq). A regra busca usos de == e operadores dentro =de , if, elseif, e while instruçõesdo-while. 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 você define == em uma expressão PowerShell, incluindo instruções condicionais, PowerShell gera um erro porque == não é uma sintaxe válida do PowerShell. Essa regra sempre sinaliza usos de == em afirmações condicionais. No entanto, ele não sinaliza os usos de = quando o lado direito do condicional usa comandos ou expressões.
Nesses casos, é provável que o uso do operador de atribuição seja intencional. Essa 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, você pode sinalizar que a tarefa é intencional envolvendo a expressão com parênteses extras. Uma exceção se aplica quando $null é usada do lado esquerdo, pois não há caso de uso para isso. Por exemplo:
if (($shortVariableName = $SuperLongVariableName['SpecialItem']['AnotherItem'])) {
...
}
Exemplo
Não Conforme
if ($a = $b)
{
...
}
if ($a == $b)
{
}
Em conformidade
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
}