Skip to content

Analyse forensique de la transcription PowerShell

Structure des transcriptions PowerShell, contenu de l'en-tête, fonctionnement des horodatages de commandes avec -IncludeInvocationHeader, et comment les investiguer.

Publié le 3 min de lecture

En bref. Une transcription est un enregistrement texte d'une session PowerShell entière — entrées et sorties — écrit par Start-Transcript ou la stratégie de transcription dans PowerShell_transcript.<computer>.<random>.<timestamp>.txt. L'en-tête porte l'heure de début, l'utilisateur, la machine, l'application hôte et le PID ; avec -IncludeInvocationHeader, chaque commande a sa propre heure de début. Toutes les heures sont celles de l'horloge locale de l'hôte. Ouvrez le parseur pour lire sessions et commandes en chronologie.

Structure

La transcription est activée par Start-Transcript ou par la stratégie de groupe (« Activer la transcription PowerShell »), qui peut l'imposer à chaque session et définir un OutputDirectory (Microsoft : about_Logging_Windows). Un fichier commence par un en-tête entre des lignes d'astérisques :

**********************
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
**********************

Ensuite, chaque ligne d'invite (PS C:\Users\svc_backup>) est suivie de la commande et de sa sortie. Avec -IncludeInvocationHeader, un bloc Command start time: précède chaque commande — le parseur attache cette heure à la commande ; sans lui, les commandes héritent de l'heure de début de session (indiquée comme approximative). Voir transcription PowerShell.

Heure locale, sans fuseau

Chaque horodatage d'une transcription — Start time, End time, Command start time — est l'horloge locale de l'hôte, au format yyyyMMddHHmmss, sans fuseau. Lorsque vous corrélez une transcription avec les journaux d'événements en UTC, vous devez connaître le fuseau horaire de la machine. Le parseur affiche les heures de transcription comme locales (étiquetées) et ne les convertit jamais silencieusement.

Ce qu'ajoutent les transcriptions

Contrairement aux journaux d'événements, une transcription capture la sortie : vous voyez donc ce qu'une commande a renvoyé — un listage de répertoire, le contenu d'un fichier, une erreur. Ce contexte tranche souvent la question de la réussite d'une action. Le parseur décode toute commande encodée d'une ligne de transcription et signale cradles et altérations, et lit les fichiers multi-sessions (un fichier peut contenir plusieurs paires transcript start/transcript end). Un transcript end manquant signifie que la session a été interrompue ou que le fichier est tronqué — le parseur vous en avertit.

Lisez les transcriptions à côté de l'historique PSReadLine et des journaux ; analysez l'ensemble dans votre navigateur.

FAQ

Où les transcriptions PowerShell sont-elles enregistrées ?

Par défaut dans le dossier Documents de l'utilisateur, sous PowerShell_transcript.<computer>.<random>.<timestamp>.txt, ou dans l'OutputDirectory défini par la stratégie de transcription. Chaque session est un fichier.

Les transcriptions ont-elles des horodatages ?

L'en-tête a une heure de début et de fin, et avec -IncludeInvocationHeader chaque commande reçoit une Command start time. Toutes les heures sont celles de l'horloge locale de l'hôte, sans fuseau enregistré.

Que contient une transcription que les journaux n'ont pas ?

Les entrées ET les sorties complètes d'une session telles que l'utilisateur les a vues, y compris les résultats des commandes — un contexte que les journaux d'événements ne capturent pas.

Articles connexes

Pas à pas : ouvrir les journaux .evtx PowerShell, l'historique PSReadLine et les transcriptions dans une visionneuse gratuite en navigateur, reconstituer les blocs de script, décoder les commandes encodées et exporter en CSV ou JSON.
Ce qu'enregistre le fichier d'historique PSReadLine, où il se trouve, pourquoi il n'a pas d'horodatage, et comment l'utiliser — et ses limites — en investigation.
Fonctionnement de -EncodedCommand et de l'obfuscation PowerShell courante — base64/UTF-16LE, gzip/deflate, codes de caractères, concaténation, opérateur de format et accents graves — et comment les décoder en toute sécurité.