Cybersecurity & Production Environment Warning
This exercise is intended for learning and testing purposes only. Do not execute scripts against production environments, business-critical systems, enterprise repositories, payroll files, HR records, student records, patient records, or shared network locations without proper authorization, testing, backups, change-control procedures, and compliance with your organization's cybersecurity policies.
Advertencia de ciberseguridad y ambiente de producción
Este ejercicio es únicamente para aprendizaje y pruebas. No ejecute scripts contra ambientes de producción, sistemas críticos, repositorios empresariales, nóminas, expedientes de empleados, estudiantes, pacientes o carpetas compartidas sin autorización formal, pruebas previas, respaldos, control de cambios y cumplimiento de las políticas de ciberseguridad de su organización.
Objective
Extract the domain that appears after the @ symbol in an email address and create a new column that can be used for grouping, filtering, and validation.
Objetivo
Extraer el dominio que aparece después del símbolo @ en una dirección de correo y crear una nueva columna útil para agrupar, filtrar y validar.
Synthetic Data
Example input file: C:\Data\Employees.csv
Datos sintéticos
Archivo de entrada de ejemplo: C:\Data\Employees.csv
| EmployeeID | Name | |
|---|---|---|
| 1001 | Juan Carballo | juan@cityofhialeah.gov |
| 1002 | Maria Perez | maria@gmail.com |
| 1003 | Carlos Gomez | carlos@miamidade.gov |
| 1004 | Ana Ruiz | ana@fiu.edu |
| 1005 | Pedro Martinez | pedro@cityofhialeah.gov |
Base Example
Split the email address after the @ symbol and return the domain as a new calculated field.
Ejemplo base
Cortar la dirección de correo después del símbolo @ y devolver el dominio como un nuevo campo calculado.
$datos | Select-Object *,
@{
Name = "Dominio"
Expression = { $_.Email.Split('@')[1] }
}Complete Script
Script completo
# PowerShell Advanced Topic 12
# Extract email domain for segmentation
$inputPath = "C:\Data\Employees.csv"
$outputPath = "C:\Data\Employees_With_Domain.csv"
$datos = Import-Csv $inputPath
$resultado = $datos | Select-Object *,
@{
Name = "Dominio"
Expression = {
if ($_.Email -match "@") {
$_.Email.Split('@')[1].ToLower()
}
else {
"INVALID_EMAIL"
}
}
}
$resultado | Export-Csv $outputPath -NoTypeInformation
Write-Host "Process completed."
Write-Host "Output file created:" $outputPathExpected Result
Resultado esperado
| EmployeeID | Name | Dominio | |
|---|---|---|---|
| 1001 | Juan Carballo | juan@cityofhialeah.gov | cityofhialeah.gov |
| 1002 | Maria Perez | maria@gmail.com | gmail.com |
| 1003 | Carlos Gomez | carlos@miamidade.gov | miamidade.gov |
| 1004 | Ana Ruiz | ana@fiu.edu | fiu.edu |
| 1005 | Pedro Martinez | pedro@cityofhialeah.gov | cityofhialeah.gov |
Real-World Applications
- Group employees, students, or users by organization.
- Detect personal email domains in institutional datasets.
- Prepare domain-level reports in Power BI.
- Support access audits and user provisioning reviews.
- Validate allowed corporate or educational domains.
Aplicaciones reales
- Agrupar empleados, estudiantes o usuarios por organización.
- Detectar dominios personales en datasets institucionales.
- Preparar reportes por dominio en Power BI.
- Apoyar auditorías de acceso y revisión de usuarios.
- Validar dominios corporativos o educativos autorizados.
Recommendations
- Convert domains to lowercase before grouping.
- Validate email format before extracting the domain.
- Maintain an authorized domain reference list.
- Flag external or unexpected domains for review.
- Document all transformation rules used in the process.
Recomendaciones
- Convertir los dominios a minúsculas antes de agrupar.
- Validar el formato del correo antes de extraer el dominio.
- Mantener una lista de dominios autorizados.
- Marcar dominios externos o inesperados para revisión.
- Documentar todas las reglas de transformación utilizadas.