PowerShell Advanced — Topic #6

Validate ZIP Code Length

Validar longitud de Códigos Postales

Identify and separate records where the ZIP Code has fewer than five digits, contains letters, or does not follow the expected numeric structure.

Identificar y separar los registros donde el código postal tenga menos de cinco dígitos, contenga letras o no cumpla la estructura numérica esperada.

FocusEnfoque
Exactness filterFiltro de exactitud
ToolHerramienta
PowerShell + Regex
OutputResultado
Valid and invalid ZIP filesArchivos ZIP válidos e inválidos

Cybersecurity & Production Environment Warning

Advertencia de ciberseguridad y ambiente de producción

This exercise is for learning and testing purposes only. Do not run scripts against production data, network shares, official HR files, student records, patient records, enterprise repositories, or business-critical folders without proper authorization, backups, testing, least-privilege permissions, change-control approval, and compliance with your organization’s cybersecurity policies.

Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos de producción, carpetas compartidas, archivos oficiales de recursos humanos, expedientes de estudiantes, expedientes de pacientes, repositorios empresariales o carpetas críticas sin autorización, respaldos, pruebas, permisos mínimos, aprobación de control de cambios y cumplimiento de las políticas de ciberseguridad de tu organización.

Business Scenario

Escenario de negocio

A contacts file contains ZIP Codes entered manually by different users. Some values are complete, while others are too short, contain letters, or include invalid characters. Before using this file for mailing, reporting, GIS, or validation against official address data, the invalid ZIP Codes must be identified and separated for review.

Un archivo de contactos contiene códigos postales ingresados manualmente por diferentes usuarios. Algunos valores están completos, mientras otros son demasiado cortos, contienen letras o incluyen caracteres inválidos. Antes de usar este archivo para envíos, reportes, GIS o validación contra datos oficiales de direcciones, los ZIP Codes inválidos deben identificarse y separarse para revisión.

33133 → Valid3313 → Invalid33A13 → Invalid33133-1234 → Review / Optional rule

Learning Objectives

Objetivos de aprendizaje

Sample Input Data

Data de entrada de ejemplo

ContactID,Name,ZipCode
1001,Juan Carballo,33133
1002,Maria Lopez,3313
1003,Pedro Martinez,33A13
1004,Ana Torres,33145
1005,Luis Perez,33133-1234
1006,Carmen Diaz,

Step 1 — Define Source and Output Files

Paso 1 — Definir archivos de entrada y salida

$sourceFile = "C:\Training\contacts.csv"
$validFile = "C:\Training\ZipValidos.csv"
$invalidFile = "C:\Training\ZipInvalidos.csv"

Step 2 — Import the CSV File

Paso 2 — Importar el archivo CSV

$records = Import-Csv -Path $sourceFile

Step 3 — Define the ZIP Code Validation Rule

Paso 3 — Definir la regla de validación del ZIP Code

This rule accepts only ZIP Codes with exactly five digits.

Esta regla acepta únicamente ZIP Codes con exactamente cinco dígitos.

$zipPattern = '^\d{5}$'

Step 4 — Separate Valid and Invalid ZIP Codes

Paso 4 — Separar ZIP Codes válidos e inválidos

$validRecords = $records | Where-Object {
    $_.ZipCode -match $zipPattern
}

$invalidRecords = $records | Where-Object {
    $_.ZipCode -notmatch $zipPattern
}

Step 5 — Export the Results

Paso 5 — Exportar los resultados

$validRecords | Export-Csv -Path $validFile -NoTypeInformation -Encoding UTF8
$invalidRecords | Export-Csv -Path $invalidFile -NoTypeInformation -Encoding UTF8

Complete Script

Script completo

$sourceFile = "C:\Training\contacts.csv"
$validFile = "C:\Training\ZipValidos.csv"
$invalidFile = "C:\Training\ZipInvalidos.csv"

$zipPattern = '^\d{5}$'

$records = Import-Csv -Path $sourceFile

$validRecords = $records | Where-Object {
    $_.ZipCode -match $zipPattern
}

$invalidRecords = $records | Where-Object {
    $_.ZipCode -notmatch $zipPattern
}

$validRecords | Export-Csv -Path $validFile -NoTypeInformation -Encoding UTF8
$invalidRecords | Export-Csv -Path $invalidFile -NoTypeInformation -Encoding UTF8

Write-Host "Valid ZIP records: $($validRecords.Count)"
Write-Host "Invalid ZIP records: $($invalidRecords.Count)"

Expected Result

Resultado esperado

Valid ZIP Codes

ZIP Codes válidos

NameZipCodeStatus
Juan Carballo33133Valid
Ana Torres33145Valid

Invalid ZIP Codes

ZIP Codes inválidos

NameZipCodeIssue
Maria Lopez3313Too short
Pedro Martinez33A13Contains letters
Luis Perez33133-1234Not five digits
Carmen DiazBlank value

Validation Checklist

Lista de validación

Professional Notes

Notas profesionales

ZIP Code validation is a small but important data quality control. Invalid postal codes can affect mailing accuracy, customer segmentation, GIS analysis, service-area reporting, and integration with external address systems. For production work, always confirm the required postal standard before rejecting records.

La validación de códigos postales es un control pequeño pero importante de calidad de datos. ZIP Codes inválidos pueden afectar envíos, segmentación de clientes, análisis GIS, reportes de áreas de servicio e integración con sistemas externos de direcciones. Para producción, confirma siempre el estándar postal requerido antes de rechazar registros.