首页/安全/取证与溯源速查/PowerShell 控制台历史
Windows 取证55 条

PowerShell 控制台历史

PSReadLine 把交互命令写入历史文件:能还原操作者在控制台敲过的命令序列,含时间辅助列。

取证与溯源速查安全更新于 2026-10-13

控制台历史记录的是什么

PSReadLine 把交互式在 PowerShell 控制台里敲过的命令写入历史文件,位置在用户配置目录下的 PSReadLine 目录中。它记录的是「人敲了什么」,与脚本块日志(记录执行内容)互为补充:一个偏交互操作序列,一个偏实际执行的代码。默认情况下历史文件只保存命令文本,不保存时间戳,因此要确定命令的执行时刻,需要结合进程创建事件与脚本块日志来定位。

基本信息

文件位置%APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
PowerShell 7%APPDATA%\Microsoft\PowerShell\PSReadLine\ConsoleHost_history.txt
记录内容交互式输入的命令行文本,按输入顺序追加
时间信息默认不记录时间戳,需用相邻事件定位时刻
按用户区分每个用户各自一份,保存在自己的配置目录下
配套来源脚本块日志(4104)、进程创建事件、终端检测记录

典型使用场景

  • 还原操作者在控制台上敲过的命令序列
  • 确认是否有人手工执行过下载、解码、凭据相关命令
  • 与脚本块日志对照:交互输入与脚本执行的差异
  • 判断历史文件是否被清理(命令序列出现中断或文件被删除)
  • 辅助确认操作者熟练程度与目的(命令的连续性与尝试过程)
  • 为访谈与复盘提供时间线上的操作细节

读取与关联

读取与关联
# 读取当前用户的控制台历史(最后 60 条)
Get-Content (Join-Path $env:APPDATA 'Microsoft/Windows/PowerShell/PSReadLine/ConsoleHost_history.txt') -Tail 60
# 读取其他用户的历史文件需要管理员权限与该用户配置目录
Get-ChildItem 'C:\Users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt' |
  ForEach-Object { "$($_.FullName) : $((Get-Content $_.FullName).Count) 行, 最后写入 $($_.LastWriteTime)" }
# 查看文件属性:大小与最后写入时间也是线索
Get-Item (Join-Path $env:APPDATA 'Microsoft/Windows/PowerShell/PSReadLine/ConsoleHost_history.txt') |
  Select-Object FullName, Length, LastWriteTime
# 关联:同时间窗内的脚本块与进程创建记录
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' -MaxEvents 100 | Where-Object Id -eq 4104 | Select-Object -First 10 TimeCreated

判读要点

观察项含义异常表现
命令顺序输入序列出现明显跳跃或与脚本日志不匹配
文件最后写入时间最后一次交互的时间点早于已知入侵时间,说明被替换或清理过
文件大小与行数历史累积量与使用强度不符,可能被截断或清空
多用户对照不同账号的操作面服务账号下出现交互式命令,需解释
命令内容具体动作编码命令、下载执行、凭据相关操作值得重点核查
默认不记时间戳,需要结合事件日志定位每条命令的时刻。与 4104 脚本块日志拼接使用:一个偏交互输入,一个偏实际执行内容。
历史文件是普通文本,可以被直接编辑或删除。发现文件缺失、行数异常或最后写入时间可疑时,应转向脚本块日志、进程创建事件与内存痕迹继续取证。

易错点

  • 以为历史文件带时间戳,按行顺序直接排时间线,时刻信息实际全靠推测
  • 只查看当前用户的历史,漏掉其他账号配置目录下的文件
  • 历史文件被删除或清空后认为没有操作记录,未改用脚本块与进程事件
  • 把历史命令当作已执行,未与执行类证据核对(历史里可能有敲错或未回车的内容)
  • 采集时在原始系统上反复执行命令,新命令写进历史文件,污染原始记录

数据来源与参考

  • Microsoft Docs(about_PSReadLine)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌