Windows PowerShell ISE 每次啟動時都會凍結 - 如何診斷?

Windows PowerShell ISE 每次啟動時都會凍結 - 如何診斷?

每次啟動 PowerShell ISE(x64 或 x86)時,我都會收到以下資訊:

部分渲染的 ISE 視窗的螢幕截圖

它完全如圖所示繪製,並且立即沒有響應。底部的黑色部分在視窗邊界內。

PowerShell CLI 運作良好。

除了我嘗試關閉應用程式時掛起的記錄之外,我在事件檢視器中看不到任何內容。

我嘗試下載該GlobalUserInterface.CompositeFont字體作為解決方案 #3 的一部分這個問題,但下載連結似乎已損壞。

截至本文發佈時,我沒有待處理的 Windows 更新。我運行的是 Windows 10 專業版 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 上,並且出於某種原因在 ISE 中透過 IP 打開一兩個文件,而不是透過映射的網路磁碟機。 ISE 嘗試解析每個文件,但花了很長時間才超時。

答案2

就我而言,減緩 PowerShell ISE 啟動速度的是控制台歷史記錄。這是一個幾乎 2Gb 的文件,其中包含許多重複的命令。刪除該檔案解決了問題:

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

我還使用前面提到的 Sysinternals Process Monitor 來發現了它。它顯示了對該文件的多次存取。

答案3

對我們來說,拖慢 PowerShell ISE 啟動速度的原因是「Show Command Add-on」。當 Show Command Add-on 開啟時,它類似於執行 get-command。確保取消選中它,下次啟動 ISE 時,速度應該會更快

答案4

正如@JD Mallen 所提到的。就我而言,我有一個自動保存資訊儲存在以下資料夾中的 XML 檔案中:

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

我刪除了 XML 文件,現在一切正常了。

相關內容