Windows PowerShell ISE 每次启动时都会冻结 - 如何诊断?

Windows PowerShell ISE 每次启动时都会冻结 - 如何诊断?

每次启动 PowerShell ISE(x64 或 x86)时,都会出现以下情况:

部分渲染的 ISE 窗口的屏幕截图

它完全按照图示绘制,但立即无响应。底部的黑色部分在窗口边界内。

PowerShell CLI 运行良好。

除了我尝试关闭应用程序时应用程序挂起的记录外,我在事件查看器中看不到任何内容。

我尝试下载GlobalUserInterface.CompositeFont字体作为解决方案 #3 的一部分,网址为这个问题,但下载链接似乎已损坏。

截至本文发布时,我还没有待处理的 Windows 更新。我正在运行 Windows 10 Pro 21H2。

在此处输入图片描述

我怎样才能知道发生了什么事?


编辑(2021-01-02T03:32Z):显然它启动得太慢了。它最终渲染了,10分钟后如果 Visual Studio 2022 可以在 10 秒内打开,那么 PS ISE 就没有借口了。到底发生了什么?

答案1

PowerShell ISE 尝试访问最近文件列表时速度很慢,并且连接反复无法访问不再存在的网络路径。我通过删除此目录解决了这个问题:

C:\Users\{username}\AppData\Local\Microsoft_Corporation\powershell_ise.exe_StrongName_lw2v2vm3wmtzzpebq33gybmeoxukb04w

我通过运行 Sysinternals Process Monitor、按 PowerShell_ISE 的 PID 进行过滤并查看渲染停止前发生的最后一件事发现了这一点。它做的最后一件事是读取该目录中的文件。然后它只是报告了几分钟的“线程退出”。

进程监视器的屏幕截图

我将大部分文件存储在 NAS 上,出于某种原因,我通过 IP 在 ISE 中打开了一两个文件,而不是通过映射的网络驱动器。ISE 尝试解析每个文件,但花了很长时间才超时。

答案2

就我而言,导致 PowerShell ISE 启动速度变慢的是控制台历史记录。这是一个几乎 2GB 的文件,包含许多重复的命令。删除此文件解决了这个问题:

C:\Users\{username}\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

我还使用前面提到的 Sysinternals 进程监视器发现了这一点。它显示对此文件有很多访问。

答案3

对我们来说,PowerShell ISE 启动速度变慢的原因是“显示命令插件”。当显示命令插件打开时,它类似于运行 get 命令。请确保取消选中它,下次启动 ISE 时,速度应该会更快

答案4

正如 @JD Mallen 所说。就我而言,我将自动保存信息存储在以下文件夹中的 XML 文件中:

AppData\
Local\
Microsoft_Corporation\
powershell_ise.exe_StrongName_lw2v2vm3wmtzzpebq33gybmeoxukb04w\
3.0.0.0\
AutoSaveInformation

我删除了 XML 文件,现在一切正常。

相关内容