PowerShell Advanced Series

15. Añadir metadatos de auditoría al archivo

15. Add Audit Metadata to the File

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.

⚠️ Advertencia de ciberseguridad y producción ⚠️ Cybersecurity and production warning

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.

Objetivo del ejercicio

Exercise objective

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.

Datos sintéticos

Synthetic data

IDNombreStatusMonto
1001Maria LopezActive2500
1002John SmithActive1800
1003Ana TorresInactive0
1004Carlos DiazActive3250

Ejemplo base

Base example

$datos_limpios | Select-Object *,
@{Name="FechaProceso"; Expression={Get-Date -Format "yyyy-MM-dd"}},
@{Name="ProcesadoPor"; Expression={$env:USERNAME}}

Resultado esperado

Expected result

IDNombreStatusMontoFechaProcesoProcesadoPorNombreEquipo
1001Maria LopezActive25002026-06-16 10:30:15jcarballoDESKTOP-01
1002John SmithActive18002026-06-16 10:30:15jcarballoDESKTOP-01
1003Ana TorresInactive02026-06-16 10:30:15jcarballoDESKTOP-01
1004Carlos DiazActive32502026-06-16 10:30:15jcarballoDESKTOP-01

Script completo

Complete script

# ==========================================================
# 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"

Validación rápida

Quick validation

# 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

Aplicaciones reales

Real-world applications

  • Documentar archivos procesados por ETL.
  • Auditar limpiezas mensuales de datos.
  • Rastrear quién generó un reporte oficial.
  • Soportar revisiones de calidad y control interno.
  • Document files processed by ETL.
  • Audit monthly data cleaning processes.
  • Track who generated an official report.
  • Support quality reviews and internal control.

Recomendaciones

Recommendations

  • Capturar fecha, usuario y equipo al inicio del proceso.
  • Conservar el archivo original sin modificar.
  • Usar nombres de columnas claros y consistentes.
  • Guardar también un log separado cuando el proceso sea crítico.
  • Capture date, user, and computer at the beginning of the process.
  • Keep the original file unchanged.
  • Use clear and consistent column names.
  • Also keep a separate log when the process is critical.

Valor del tópico

Topic value

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.