HOWTO · PowerShell
Valores Booleanos no PowerShell
Este artigo explicará o que são valores Booleanos e como podemos usá-los dentro do ambiente Windows PowerShell.
Nesta página
O PowerShell representa valores booleanos com $true e $false. Comparações e comandos podem produzir esses valores, que podem ser combinados com operadores lógicos ou usados para controlar uma instrução if.
Valores booleanos no PowerShell
Um valor booleano representa um de dois estados lógicos: verdadeiro ou falso. No PowerShell, os literais booleanos nativos são $true e $false. O PowerShell os exibe como True e False, mas essas palavras exibidas não são strings entre aspas. Por exemplo, $true é um valor booleano, enquanto "True" é uma string. Da mesma forma, 1 e 0 são números, não valores booleanos nativos. Quando necessário, um script pode converter valores explicitamente, mas é mais claro usar literais booleanos em condições.
Os valores booleanos são úteis porque comparações e comandos podem produzi-los, e os scripts podem usar o resultado para decidir o que fazer. As comparações usam operadores como -eq (igual) e -ne (diferente). Os operadores lógicos combinam ou invertem expressões booleanas. Os exemplos a seguir mostram os valores conforme o PowerShell os exibe.
Comparar valores e combinar condições
Os operadores de comparação produzem um resultado booleano. Estes operadores comparam valores: -eq verifica a igualdade, -ne verifica a desigualdade, -gt significa maior que, -lt significa menor que, -ge significa maior ou igual a, e -le significa menor ou igual a. Os operadores de comparação do PowerShell também podem comparar strings; por padrão, a comparação entre strings não diferencia maiúsculas de minúsculas. Use -ceq quando precisar de uma comparação de igualdade que diferencie maiúsculas de minúsculas.
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
$score = 84
$name = "Ava"
$hasName = $name -ne ""
$passed = ($score -ge 70) -and $hasName
$needsReview = -not $passed
Write-Output (10 -eq 10)
Write-Output (10 -ne 8)
Write-Output (10 -gt 8)
Write-Output (10 -lt 8)
Write-Output (10 -le 10)
Write-Output (10 -ge 10)
Write-Output ($true -and $false)
Write-Output ($true -or $false)
Write-Output $needsReview
if ($passed) {
Write-Output "Ava passed."
} else {
Write-Output "Ava did not pass."
}
True
True
True
False
True
True
False
True
False
Ava passed.
As seis primeiras linhas demonstram os operadores de comparação e seus resultados booleanos. O operador lógico -and só é verdadeiro quando os dois operandos são verdadeiros; -or é verdadeiro quando pelo menos um operando é verdadeiro. -not inverte um valor booleano, portanto $needsReview é falso quando $passed é verdadeiro. Os parênteses deixam claro quais comparações formam a condição combinada. Neste exemplo, $passed armazena uma expressão booleana, e a instrução if usa esse valor para escolher um dos ramos.
Obter resultados booleanos de comandos do PowerShell
Alguns comandos retornam valores booleanos diretamente. Test-Path retorna $true quando o caminho especificado existe e $false caso contrário. A resposta depende do computador em uso e do caminho verificado; não presuma que um diretório específico do Windows exista em todos os sistemas. Por exemplo, atribua Test-Path -Path $env:TEMP a uma variável para verificar o diretório temporário definido para o ambiente atual.
Test-Connection pode retornar um resultado booleano quando usado com -Quiet. Por exemplo, $reachable = Test-Connection -ComputerName "example.com" -Count 2 -Quiet armazena se o destino respondeu às tentativas de conexão. O acesso à rede, o DNS, as regras do firewall, a configuração remota e a versão do PowerShell podem afetar o resultado ou o comportamento do comando; por isso, o resultado de um computador não é uma garantia universal. Se o comportamento depender da versão, consulte a ajuda do comando no sistema em que o script será executado.
Um comando também pode produzir texto ou objetos, em vez de um único valor booleano. Ao usar a saída de um comando em uma condição, verifique se ele emite um resultado ou vários; a avaliação de verdadeiro ou falso de coleções e o comportamento do pipeline podem afetar a condição. Prefira uma opção de comando como -Quiet quando a tarefa exigir especificamente uma resposta booleana.
Usar valores booleanos em scripts
Armazene o resultado de uma comparação ou de um comando em uma variável com nome descritivo quando a condição for reutilizada. Por exemplo, $isAvailable = Test-Path -Path $env:TEMP registra uma verificação, e if ($isAvailable) { ... } pode escolher uma resposta. Combinar verificações é útil quando uma ação depende de todos os pré-requisitos: $isReady -and $hasPermission. Use -or quando qualquer uma das condições for suficiente e -not quando o script precisar agir se uma condição for falsa.
O PowerShell trata valores booleanos como distintos de valores numéricos. Não descreva 1 como $true nem 0 como $false; uma API, um formato de arquivo ou um sistema externo pode representar um campo verdadeiro/falso com números ou texto, mas essa representação pertence à interface em questão. Converta ou valide os dados na fronteira, em vez de depender de uma suposição implícita. Essa distinção ajuda a evitar comparações inesperadas e torna mais clara a intenção do script.
Conclusão
Os valores $true e $false do PowerShell representam estados booleanos. Operadores de comparação como -eq, -ne, -gt, -lt, -le e -ge criam resultados booleanos, enquanto -and, -or e -not os combinam ou invertem. Comandos como Test-Path e Test-Connection -Quiet podem fornecer resultados booleanos cujo significado depende do caminho ou do ambiente verificado. Atribua esses resultados a variáveis com nomes claros e use-os em condições para controlar o fluxo do script. Mantenha os valores booleanos distintos de strings e números, especialmente ao trocar dados com sistemas externos.