Convert messy phone values into a clean and consistent format such as 305-555-1234 by removing spaces, dots, parentheses, and other unnecessary characters.
Convertir teléfonos desordenados en un formato limpio y consistente como 305-555-1234, removiendo espacios, puntos, paréntesis y otros caracteres innecesarios.
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.
A CSV file contains phone numbers entered in multiple formats. Some values include parentheses, dots, spaces, country codes, or text characters. The goal is to standardize valid 10-digit phone numbers into one clean format for reporting, calling lists, CRM imports, student records, or operational exports.
Un archivo CSV contiene números telefónicos ingresados en múltiples formatos. Algunos valores incluyen paréntesis, puntos, espacios, códigos de país o caracteres de texto. El objetivo es estandarizar teléfonos válidos de 10 dígitos en un formato limpio para reportes, listas de llamadas, importaciones a CRM, expedientes de estudiantes o exportaciones operativas.
(305) 555-1234305.555.1234305 555 12343055551234EmployeeID,Name,Phone 1001,Juan Carballo,(305) 555-1234 1002,Maria Gonzalez,305.555.7788 1003,Pedro Martinez,305 555 9900 1004,Ana Rodriguez,3055554422 1005,Luis Perez,Phone: 305-555-6611
$sourceFile = "C:\Training\phones_raw.csv" $outputFile = "C:\Training\phones_clean.csv"
$records = Import-Csv -Path $sourceFile
The regex pattern \D removes anything that is not a digit. This converts values like (305) 555-1234 into 3055551234.
El patrón regex \D remueve todo lo que no sea un dígito. Esto convierte valores como (305) 555-1234 en 3055551234.
$records | ForEach-Object {
$cleanPhone = $_.Phone -replace '\D', ''
}After cleaning the value, PowerShell checks whether the phone number has exactly 10 digits. If it does, the value is formatted as ###-###-####.
Después de limpiar el valor, PowerShell verifica si el teléfono tiene exactamente 10 dígitos. Si los tiene, el valor se formatea como ###-###-####.
$records | ForEach-Object {
$cleanPhone = $_.Phone -replace '\D', ''
if ($cleanPhone.Length -eq 10) {
$_.Phone = "{0}-{1}-{2}" -f `
$cleanPhone.Substring(0,3), `
$cleanPhone.Substring(3,3), `
$cleanPhone.Substring(6,4)
}
}$records | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8
# PowerShell Advanced Topic #2
# Standardize Phone Numbers
# Learning / testing environment only
$sourceFile = "C:\Training\phones_raw.csv"
$outputFile = "C:\Training\phones_clean.csv"
$records = Import-Csv -Path $sourceFile
$records | ForEach-Object {
if ($_.Phone) {
$cleanPhone = $_.Phone -replace '\D', ''
if ($cleanPhone.Length -eq 10) {
$_.Phone = "{0}-{1}-{2}" -f `
$cleanPhone.Substring(0,3), `
$cleanPhone.Substring(3,3), `
$cleanPhone.Substring(6,4)
}
else {
$_.Phone = "INVALID: $($_.Phone)"
}
}
}
$records | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8
Write-Host "Phone number standardization completed successfully."
Write-Host "Clean file created at: $outputFile"| Name | Phone |
|---|---|
| Juan Carballo | (305) 555-1234 |
| Maria Gonzalez | 305.555.7788 |
| Pedro Martinez | 305 555 9900 |
| Name | Phone |
|---|---|
| Juan Carballo | 305-555-1234 |
| Maria Gonzalez | 305-555-7788 |
| Pedro Martinez | 305-555-9900 |
This example is designed for standard U.S. 10-digit phone numbers. International numbers, extensions, country codes, or business-specific phone rules may require additional logic.
Este ejemplo está diseñado para teléfonos estándar de Estados Unidos de 10 dígitos. Números internacionales, extensiones, códigos de país o reglas específicas del negocio pueden requerir lógica adicional.
Examples requiring review: +1 (305) 555-1234 ext. 22 011-52-55-1234-5678 305-555 UNKNOWN No phone provided
Call listsStudent recordsPatient recordsCRM importsCustomer filesSMS campaignsOperational reports
This exercise demonstrates how PowerShell can transform inconsistent contact data into a consistent business-ready format. Standardized phone numbers improve reporting quality, reduce manual cleanup, and make downstream communication processes more reliable.
Este ejercicio demuestra cómo PowerShell puede transformar datos de contacto inconsistentes en un formato consistente y listo para el negocio. Los teléfonos estandarizados mejoran la calidad de los reportes, reducen la limpieza manual y hacen más confiables los procesos posteriores de comunicación.