HOWTO · PowerShell
Como Comparar o Conteúdo de Dois Objetos String no PowerShell
Este artigo explora várias abordagens para comparar o conteúdo de dois objetos de string no PowerShell, desde verificações básicas de igualdade e desigualdade usando operadores como -eq e -ne até técnicas mais avançadas envolvendo o método Equals().
Nesta página
O PowerShell oferece dois tipos de verificação de strings: use -eq ou -ne para comparar valores e -like para testar um valor com um padrão curinga. Por padrão, os operadores de comparação não diferenciam maiúsculas de minúsculas; acrescente c (-ceq ou -cne) quando a capitalização precisar corresponder. O método Equals() de uma string também permite comparar valores diferenciando maiúsculas de minúsculas.
Escolha um método de comparação de strings no PowerShell
Escolha o operador de acordo com a pergunta que você precisa responder:
- Use
-eqpara verificar se dois valores são iguais ou-nepara verificar se são diferentes. Por padrão, nenhum dos dois diferencia maiúsculas de minúsculas. - Use
-ceqe-cnepara verificar igualdade ou desigualdade considerando maiúsculas e minúsculas como diferentes. - Use
-likequando o valor à direita contiver sintaxe de caracteres curinga, como*, que representa qualquer sequência de caracteres. Esse operador testa um padrão; não compara as duas strings como valores literais. - Use
Equals()quando uma chamada de método de instância for mais conveniente e você quiser comparar valores diferenciando maiúsculas de minúsculas.
Esses operadores retornam um resultado booleano para duas strings escalares. Mantenha o padrão à direita de -like para deixar clara a intenção.
Compare strings por igualdade ou desigualdade com -eq e -ne
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
$first = "PowerShell"
$second = "PowerShell"
$isEqual = $first -eq $second
$isDifferent = $first -ne $second
Write-Host "Equal: $isEqual"
Write-Host "Unequal: $isDifferent"
Neste exemplo, a execução fornecida imprimiu Equal: True e Unequal: False. Com os dois valores idênticos mostrados, -eq representa a verificação de igualdade e -ne, sua inversa. Em comparações comuns de strings no PowerShell, esses operadores não diferenciam maiúsculas de minúsculas: por exemplo, "PowerShell" -eq "powershell" é verdadeiro. Se esse comportamento padrão não for adequado, use os operadores que diferenciam maiúsculas de minúsculas apresentados abaixo.
Faça verificações de igualdade e desigualdade diferenciando maiúsculas de minúsculas com -ceq e -cne
O prefixo c faz com que essas comparações diferenciem maiúsculas de minúsculas. Por exemplo, "PowerShell" -ceq "powershell" é falso porque a capitalização das letras é diferente, enquanto "PowerShell" -cne "powershell" é verdadeiro. Use -ceq para exigir que a capitalização e os caracteres sejam iguais; use -cne quando uma diferença de capitalização também deva contar como diferença.
As formas que diferenciam maiúsculas de minúsculas são úteis para identificadores ou tokens cuja capitalização seja significativa. Escolha uma regra de comparação e aplique-a de maneira consistente ao validar valores; caso contrário, uma verificação poderá aceitar variantes que outra parte do script trata como distintas.
Corresponda a padrões curinga com -like
-like verifica se uma string corresponde a um padrão curinga. O curinga * corresponde a qualquer sequência de caracteres, inclusive nenhuma, enquanto ? corresponde a um caractere. Por exemplo, "report-2026.csv" -like "report-*.csv" corresponde ao padrão, mas "report-2026.txt" -like "report-*.csv" não. São verificações de padrão, não de igualdade literal.
Assim como -eq, o operador -like não diferencia maiúsculas de minúsculas por padrão. Use -clike quando a correspondência do padrão precisar respeitar a capitalização. Quando a entrada precisar ser igual a um valor literal, use -eq ou -ceq; os caracteres curinga em um padrão -like têm significado especial.
Compare valores de strings com Equals()
Chame Equals() na primeira string e passe a segunda como argumento: $first.Equals($second). Para strings, esse método compara os valores diferenciando maiúsculas de minúsculas; por isso, "PowerShell".Equals("powershell") é falso. Ele não interpreta caracteres curinga: "report-2026.csv".Equals("report-*.csv") é falso porque o asterisco é tratado como um caractere literal no argumento.
Para uma verificação booleana simples, Equals() e -ceq expressam igualdade diferenciando maiúsculas de minúsculas. Prefira os operadores de comparação quando eles tornarem uma condição mais fácil de ler; use o método quando uma chamada de método se encaixar melhor no código ao redor. Use -like somente quando a tarefa for corresponder a um padrão.