Análisis forense de la transcripción de PowerShell: cómo leer la transcripción
Cómo se estructuran las transcripciones de PowerShell, qué registra el encabezado, cómo funcionan las marcas de tiempo de los comandos con -IncludeInvocationHeader y cómo investigarlas.
En resumen. Una transcripción es un registro de texto de una sesión completa de PowerShell (entrada y salida), escrito por Start-Transcript o por la directiva de transcripción en PowerShell_transcript.<computer>.<random>.<timestamp>.txt. El encabezado contiene la hora de inicio, el usuario, el equipo, la aplicación host y el PID; con -IncludeInvocationHeader, cada comando recibe su propia hora de inicio. Todas las horas corresponden al reloj local del host. Abra el parser para leer las sesiones y los comandos como una línea de tiempo.
Estructura
La transcripción se habilita con Start-Transcript o mediante una directiva de grupo ("Turn on PowerShell Transcription"), que puede forzarla en todas las sesiones y definir un OutputDirectory (Microsoft: about_Logging_Windows). Un archivo comienza con un encabezado entre filas de asteriscos:
**********************
Windows PowerShell transcript start
Start time: 20260914104500
Username: FIN-WKS-07\svc_backup
Machine: FIN-WKS-07 (Microsoft Windows NT 10.0.19045.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 4242
PSVersion: 5.1.19041.4648
**********************
A continuación, cada línea de prompt (PS C:\Users\svc_backup>) va seguida del comando y de su salida. Con -IncludeInvocationHeader, un bloque Command start time: precede a cada comando: el parser asocia esa hora al comando; sin él, los comandos heredan la hora de inicio de la sesión (que se muestra como aproximada). Consulte transcripción de PowerShell.
Hora local, sin zona horaria
Todas las marcas de tiempo de una transcripción (Start time, End time, Command start time) corresponden al reloj local del host, con el formato yyyyMMddHHmmss y sin zona horaria. Para correlacionar una transcripción con los registros de eventos en UTC, necesita conocer la zona horaria del equipo. El parser muestra las horas de las transcripciones como locales (etiquetadas) y nunca las convierte de forma silenciosa.
Qué aportan las transcripciones
A diferencia de los registros de eventos, una transcripción captura la salida, por lo que puede ver lo que devolvió un comando: un listado de directorio, el contenido de un archivo, un error. Ese contexto a menudo permite determinar si una acción tuvo éxito. El parser decodifica cualquier comando codificado de una línea de la transcripción, señala los cradles y las manipulaciones, y lee archivos con varias sesiones (un archivo puede contener varios pares transcript start/transcript end). La ausencia del pie transcript end indica que la sesión se interrumpió o que el archivo está truncado; el parser se lo advierte.
Lea las transcripciones junto al historial de PSReadLine y los registros; analice el conjunto completo en su navegador.
Preguntas frecuentes
¿Dónde se guardan las transcripciones de PowerShell?
De forma predeterminada, en la carpeta Documentos del usuario como PowerShell_transcript.<computer>.<random>.<timestamp>.txt, o en el OutputDirectory definido por la directiva de transcripción. Cada sesión es un archivo.
¿Las transcripciones tienen marcas de tiempo?
El encabezado incluye un Start time y un End time y, con -IncludeInvocationHeader, cada comando recibe un Command start time. Todas las horas corresponden al reloj local del host, sin que se registre la zona horaria.
¿Qué contiene una transcripción que no contengan los registros?
La entrada y la salida completas de una sesión tal como las vio el usuario, incluidos los resultados de los comandos: un contexto que los registros de eventos no capturan.