Validar CPF manualmente é trabalhoso e propenso a erros. Com um script PowerShell, você automatiza a verificação dos dígitos verificadores em segundos, garantindo precisão e eficiência no processamento de dados.
O primeiro passo é criar uma função que receba o CPF como string, remova caracteres não numéricos e valide os dois dígitos verificadores usando o algoritmo padrão.
function Test-Cpf {
param([string]$Cpf)
# Remover caracteres não numéricos
$CpfLimpo = $Cpf -replace '\D'
# Verificar se tem 11 dígitos
if ($CpfLimpo.Length -ne 11) { return $false }
# Verificar se todos os dígitos são iguais
if ($CpfLimpo -match '^(\d)\1+$') { return $false }
# Calcular primeiro dígito verificador
$Soma = 0
for ($i = 0; $i -lt 9; $i++) {
$Soma += [int]$CpfLimpo[$i] * (10 - $i)
}
$Resto = $Soma % 11
$Digito1 = if ($Resto -lt 2) { 0 } else { 11 - $Resto }
# Calcular segundo dígito verificador
$Soma = 0
for ($i = 0; $i -lt 10; $i++) {
$Soma += [int]$CpfLimpo[$i] * (11 - $i)
}
$Resto = $Soma % 11
$Digito2 = if ($Resto -lt 2) { 0 } else { 11 - $Resto }
# Comparar com os dígitos originais
return $Digito1 -eq [int]$CpfLimpo[9] -and $Digito2 -eq [int]$CpfLimpo[10]
}
Com a função criada, basta chamá-la passando o CPF desejado. O script retornará True para CPFs válidos e False para inválidos.
# Exemplo de uso
$Cpfs = @(
"123.456.789-09", # Inválido
"529.982.247-25", # Válido
"111.111.111-11" # Inválido (todos dígitos iguais)
)
foreach ($Cpf in $Cpfs) {
$EhValido = Test-Cpf -Cpf $Cpf
Write-Host "$Cpf -> $($EhValido.ToString().ToUpper())"
}
| CPF de Entrada | CPF Limpo | Válido? |
|---|---|---|
| 529.982.247-25 | 52998224725 | True |
| 123.456.789-09 | 12345678909 | False |
| 111.111.111-11 | 11111111111 | False |
Com este script PowerShell, você valida CPFs de forma rápida e confiável, eliminando a necessidade de cálculos manuais e reduzindo erros em processamentos em lote. A automação garante que apenas CPFs com dígitos verificadores corretos sejam aceitos, otimizando sua rotina de trabalho.