flysmog.pages.dev

Como validar CPF no PowerShell com algoritmo de dígitos verificadores?

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.

Pré-requisitos

Passo 1: Criar a função de validação

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]
}

Passo 2: Executar a validação

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())"
}

Exemplo Prático

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

Conclusão

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.