查看: 102|回复: 1

PowerShell启动卡顿内存飙升?可能是800MB历史记录文件在作祟

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式
最近在开发过程中遇到一个非常诡异的问题:PowerShell一启动,整个系统就像卡住一样,鼠标移动都变得迟缓。打开任务管理器一看,好家伙,PowerShell进程的内存占用像坐火箭一样往上蹿,甚至在没有任何操作的情况下也能飙到GB级别。经过一番侦探式的排查,终于揪出了幕后真凶——一个800MB的历史记录文件。



问题现场

现象非常直接:

  • 双击启动PowerShell,或者直接在Visual Studio Code中打开终端
  • 系统明显卡顿,鼠标移动都变得迟缓
  • 在任务管理器中,PowerShell进程占用了极高的内存,甚至达到GB级别
  • 等待许久后,终端才勉强可以输入命令




抽丝剥茧:排查过程

为了找到原因,我决定深入系统内部一探究竟,而不是急着重装系统。

1. 进程分析
首先使用Get-Process命令查看PowerShell进程的状态,发现WorkingSet(工作集内存)数值异常高。

2. 环境检查
我怀疑是不是某个Profile配置文件或加载的模块有问题。检查了$PROFILE变量指向的脚本,并没有发现特殊的启动脚本。接着使用Get-Module检查已加载的模块,一切看起来都很正常。

3. 关键发现
在排查PowerShell的常用模块PSReadLine时,我注意到了一个细节。PSReadLine负责管理命令行历史记录、语法高亮等功能,它会把我们敲过的所有命令都保存在一个纯文本文件中。我顺藤摸瓜找到了这个文件的位置:
  1. %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
复制代码

查看文件属性时,我大吃一惊:这个纯文本文件的大小竟然高达832MB!这意味着里面可能保存了数百万行的命令历史记录。

真相就是:PowerShell启动时,PSReadLine模块会尝试加载这个巨大的历史记录文件,以便提供按向上箭头查找历史命令的功能。这就好比让系统一口气背诵一本字典,不卡才怪。



一键解决

既然找到病根,治疗方案非常简单:让PowerShell不再加载这个庞然大物。为了保险起见(万一里面有重要的历史命令),我没有直接删除,而是选择先重命名备份。

操作步骤如下:
  1. cd "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine"
  2. Rename-Item .\ConsoleHost_history.txt -NewName ConsoleHost_history.txt.bak
复制代码

效果立竿见影:再次启动PowerShell,秒开!内存占用恢复到几十MB的正常水平,系统瞬间恢复了丝般顺滑。



为什么会有这么大的历史文件?

通常情况下,历史记录文件过大有两个常见原因:

  • 日积月累:从未清理过,数年的操作记录都积压在一起
  • 自动化脚本:某些自动任务如果在PowerShell环境下疯狂循环执行命令,这些命令也会被记录下来




避坑指南

建议定期检查以下目录下的文件大小:
  1. %APPDATA%\Microsoft\Windows\PowerShell\PSReadLine
复制代码

如果发现自己不需要保留那么久远的历史记录,可以考虑定期清理历史文件。如果备份文件里没有重要的命令,果断删除以释放空间。

希望这篇文章能帮到遇到同样问题的朋友。在终端卡顿时,不妨先检查下历史记录文件是否已经变得过于庞大。
回复

使用道具 举报

发表于 3 小时前 | 显示全部楼层

Re: PowerShell启动卡顿内存飙升?可能是800MB历史记录文件在作祟

非常感谢分享这个宝贵的排查经验!我之前也遇到过类似的情况,但没往历史记录文件上想,一直以为是哪个模块加载的问题。800MB的纯文本文件确实太惊人了,难怪启动时会卡死。 顺便补充一下,这个历史记录文件除了手动删除或重命名,也可以通过设置`$MaximumHistoryCount`来限制最大记录条数,PSReadLine默认好像是4096,但如果长时间不清理还是会累积。另外,如果用了很多自动化脚本,可以写个定时任务定期清空这个文件,或者把历史记录存储到别的地方。 总之这个定位过程很清晰,从进程分析到环境检查再到历史文件,排错逻辑值得学习。已经去检查了一下自己的历史记录文件,才几十KB就放心了。再次感谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-5 22:18 , Processed in 0.025901 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部