Inyectar automáticamente columnas indicando la fecha exacta de ejecución y el usuario que corrió el script.
Automatically inject columns indicating the exact execution date and the user who ran the script.
Este ejercicio es solo para aprendizaje y pruebas. No ejecutes scripts contra datos reales, ambientes de producción, carpetas compartidas, sistemas críticos o repositorios empresariales sin autorización, respaldos, pruebas previas, permisos mínimos, control de cambios y cumplimiento de los protocolos de ciberseguridad de tu organización.
This exercise is for learning and testing only. Do not run scripts against real data, production environments, shared folders, critical systems, or enterprise repositories without authorization, backups, prior testing, least-privilege permissions, change control, and compliance with your organization's cybersecurity protocols.
Agregar columnas de auditoría a un archivo procesado para identificar cuándo se generó, quién lo procesó y desde qué equipo se ejecutó el script. Este patrón mejora la trazabilidad y facilita revisiones posteriores.
Add audit columns to a processed file to identify when it was generated, who processed it, and from which computer the script was executed. This pattern improves traceability and supports future reviews.
| ID | Nombre | Status | Monto |
|---|---|---|---|
| 1001 | Maria Lopez | Active | 2500 |
| 1002 | John Smith | Active | 1800 |
| 1003 | Ana Torres | Inactive | 0 |
| 1004 | Carlos Diaz | Active | 3250 |
$datos_limpios | Select-Object *,
@{Name="FechaProceso"; Expression={Get-Date -Format "yyyy-MM-dd"}},
@{Name="ProcesadoPor"; Expression={$env:USERNAME}}| ID | Nombre | Status | Monto | FechaProceso | ProcesadoPor | NombreEquipo |
|---|---|---|---|---|---|---|
| 1001 | Maria Lopez | Active | 2500 | 2026-06-16 10:30:15 | jcarballo | DESKTOP-01 |
| 1002 | John Smith | Active | 1800 | 2026-06-16 10:30:15 | jcarballo | DESKTOP-01 |
| 1003 | Ana Torres | Inactive | 0 | 2026-06-16 10:30:15 | jcarballo | DESKTOP-01 |
| 1004 | Carlos Diaz | Active | 3250 | 2026-06-16 10:30:15 | jcarballo | DESKTOP-01 |
# ==========================================================
# PowerShell Advanced Topic 15
# Add Audit Metadata to a Processed File
# ==========================================================
$inputFile = "C:\Data\Clean_Records.csv"
$outputFile = "C:\Data\Clean_Records_With_Audit_Metadata.csv"
# Import clean data
$datos_limpios = Import-Csv $inputFile
# Capture audit values once for consistency across all rows
$fechaProceso = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$procesadoPor = $env:USERNAME
$nombreEquipo = $env:COMPUTERNAME
# Add audit metadata columns
$resultado = $datos_limpios | Select-Object *,
@{Name="FechaProceso"; Expression={$fechaProceso}},
@{Name="ProcesadoPor"; Expression={$procesadoPor}},
@{Name="NombreEquipo"; Expression={$nombreEquipo}}
# Export final audited file
$resultado | Export-Csv $outputFile -NoTypeInformation -Encoding UTF8
Write-Host "Process completed."
Write-Host "Processed by: $procesadoPor"
Write-Host "Process date: $fechaProceso"
Write-Host "Computer: $nombreEquipo"
Write-Host "Output file: $outputFile"# Validate output file $validacion = Import-Csv $outputFile # Show first records with audit fields $validacion | Select-Object -First 5 ID, FechaProceso, ProcesadoPor, NombreEquipo | Format-Table -AutoSize
Este patrón convierte un archivo procesado en un archivo trazable. Ya no solo tenemos el resultado final: también sabemos cuándo se produjo, quién lo ejecutó y desde qué equipo se generó.
This pattern turns a processed file into a traceable file. We do not only have the final output: we also know when it was produced, who executed it, and from which computer it was generated.