PowerShell Advanced — Topic #1

Capitalize Names and Last Names

Capitalizar nombres y apellidos

Correct names entered in lowercase, uppercase, or mixed case so they look professional in reports, exports, dashboards, certificates, and official communications.

Corregir nombres ingresados en minúsculas, MAYÚSCULAS o formato mixto para que luzcan profesionales en reportes, exportaciones, dashboards, certificados y comunicaciones oficiales.

FocusEnfoque
Visual standardizationEstandarización visual
ToolHerramienta
PowerShell + TextInfo.ToTitleCase()
OutputResultado
Clean professional namesNombres limpios y profesionales

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 CSV file contains employee, student, customer, vendor, or patient names with inconsistent capitalization. The data is technically valid, but it looks unprofessional when used in reports, letters, dashboards, certificates, or operational exports.

Un archivo CSV contiene nombres de empleados, estudiantes, clientes, proveedores o pacientes con capitalización inconsistente. La data es técnicamente válida, pero luce poco profesional cuando se usa en reportes, cartas, dashboards, certificados o exportaciones operativas.

juan carballoJUAN CARBALLOjuAn caRbAllo

Learning Objectives

Objetivos de aprendizaje

Sample Input Data

Data de entrada de ejemplo

EmployeeID,FirstName,LastName,Department
1001,juan,carballo,IT
1002,MARIA,GONZALEZ,Finance
1003,peDro,marTinez,HR
1004,ANA,RODRIGUEZ,Operations
1005,luis,perez,Customer Service

Step 1 — Define Source and Output Files

Paso 1 — Definir archivos de entrada y salida

$sourceFile = "C:\Training\employees_raw.csv"
$outputFile = "C:\Training\employees_clean.csv"

Step 2 — Import the CSV File

Paso 2 — Importar el archivo CSV

$employees = Import-Csv -Path $sourceFile

Step 3 — Capitalize First Name and Last Name

Paso 3 — Capitalizar nombre y apellido

This approach converts the original text to lowercase first and then applies title case. This helps standardize records entered in uppercase, lowercase, or mixed case.

Este enfoque convierte primero el texto a minúsculas y luego aplica formato de título. Esto ayuda a estandarizar registros ingresados en mayúsculas, minúsculas o formato mixto.

$textInfo = (Get-Culture).TextInfo

$employees | ForEach-Object {
    $_.FirstName = $textInfo.ToTitleCase($_.FirstName.ToLower())
    $_.LastName  = $textInfo.ToTitleCase($_.LastName.ToLower())
}

Step 4 — Export the Cleaned File

Paso 4 — Exportar el archivo limpio

$employees | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8

Complete Script

Script completo

# PowerShell Advanced Topic #1
# Capitalize Names and Last Names
# Learning / testing environment only

$sourceFile = "C:\Training\employees_raw.csv"
$outputFile = "C:\Training\employees_clean.csv"

$employees = Import-Csv -Path $sourceFile
$textInfo = (Get-Culture).TextInfo

$employees | ForEach-Object {
    if ($_.FirstName) {
        $_.FirstName = $textInfo.ToTitleCase($_.FirstName.Trim().ToLower())
    }

    if ($_.LastName) {
        $_.LastName = $textInfo.ToTitleCase($_.LastName.Trim().ToLower())
    }
}

$employees | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8

Write-Host "Name capitalization completed successfully."
Write-Host "Clean file created at: $outputFile"

Expected Result

Resultado esperado

Before

Antes

FirstNameLastName
juancarballo
MARIAGONZALEZ
peDromarTinez

After

Después

FirstNameLastName
JuanCarballo
MariaGonzalez
PedroMartinez

Validation Checklist

Lista de validación

Important Note

Nota importante

Title case improves presentation, but it is not perfect for every name. Names with apostrophes, hyphens, prefixes, particles, or cultural variations may require additional business rules or manual review.

El formato de título mejora la presentación, pero no es perfecto para todos los nombres. Nombres con apóstrofes, guiones, prefijos, partículas o variaciones culturales pueden requerir reglas adicionales o revisión manual.

Examples requiring review:
O'NEIL  → O'Neil
MCARTHUR → Mcarthur
DE LA CRUZ → De La Cruz
SMITH-JONES → Smith-Jones

Real-World Use Cases

Casos de uso reales

HR employee listsStudent recordsPatient recordsCustomer filesCertificatesMail mergeDashboards

Final Takeaway

Conclusión final

This exercise demonstrates how a small PowerShell transformation can improve the professional quality of operational data. Visual standardization does not replace full data governance, but it is a practical first step toward cleaner reports, better exports, and more consistent downstream processes.

Este ejercicio demuestra cómo una pequeña transformación en PowerShell puede mejorar la calidad profesional de la data operativa. La estandarización visual no reemplaza la gobernanza completa de datos, pero es un primer paso práctico hacia reportes más limpios, mejores exportaciones y procesos posteriores más consistentes.