Validar um CNPJ manualmente é uma tarefa propensa a erros e demorada. Com um algoritmo implementado no PowerShell, você automatiza o processo, garantindo precisão e rapidez na verificação de documentos fiscais.
O algoritmo de validação de CNPJ consiste em dois dígitos verificadores calculados a partir dos primeiros 12 dígitos do número. O script abaixo implementa essa lógica de forma eficiente.
function Test-CNPJ {
param([string]$CNPJ)
# Remover caracteres não numéricos
$CNPJ = $CNPJ -replace '\D', ''
# Verificar se o CNPJ tem 14 dígitos
if ($CNPJ.Length -ne 14) {
return $false
}
# Verificar se todos os dígitos são iguais (ex: 00.000.000/0000-00)
if ($CNPJ -match '^(\d)\1{13}$') {
return $false
}
# Calcular o primeiro dígito verificador
$soma = 0
$pesos = @(5,4,3,2,9,8,7,6,5,4,3,2)
for ($i = 0; $i -lt 12; $i++) {
$soma += [int]$CNPJ[$i] * $pesos[$i]
}
$resto = $soma % 11
$digito1 = if ($resto -lt 2) { 0 } else { 11 - $resto }
# Calcular o segundo dígito verificador
$soma = 0
$pesos = @(6,5,4,3,2,9,8,7,6,5,4,3,2)
for ($i = 0; $i -lt 13; $i++) {
$soma += [int]$CNPJ[$i] * $pesos[$i]
}
$resto = $soma % 11
$digito2 = if ($resto -lt 2) { 0 } else { 11 - $resto }
# Comparar os dígitos calculados com os informados
$digitoCalculado = "$($digito1)$($digito2)"
$digitoInformado = "$($CNPJ[12])$($CNPJ[13])"
return $digitoCalculado -eq $digitoInformado
}
# Exemplo de uso
$CNPJ = "12.345.678/0001-95"
if (Test-CNPJ -CNPJ $CNPJ) {
Write-Host "CNPJ válido: $CNPJ"
} else {
Write-Host "CNPJ inválido: $CNPJ"
}
| CNPJ de Entrada | Válido? | Observação |
|---|---|---|
| 12.345.678/0001-95 | Sim | CNPJ válido e bem formado. |
| 11.111.111/1111-11 | Não | CNPJ inválido (dígitos repetidos). |
| 12.345.678/0001-96 | Não | CNPJ inválido (dígito verificador incorreto). |
Com este algoritmo no PowerShell, você valida CNPJs de forma rápida e confiável, eliminando a necessidade de verificação manual e reduzindo significativamente o risco de erros em processos de validação de documentos fiscais.