前言
安裝 PowerShell 後,我們常常會額外安裝一些擴充功能,例如:
- PSFzf:提供模糊搜尋。
- zoxide:快速導航檔案系統。
- posh-git:提供 Git 命令提示和自動完成。
- Oh My Posh:強化 PowerShell 提示樣式。
- 等…
這些外掛程式可以按照各自的安裝方式整合到 PowerShell。
然而,最終可能會導致載入變慢的問題,每次開啟 PowerShell 都需要很長時間載入。
本篇文章將說明並記錄我的解決過程。
確定問題
首先在 PowerShell 中,輸入以下命令以編輯 PowerShell 的使用者設定檔(Profile):
|
|
可以看到目前的安裝配置如下,分別載入 PSFzf 與 zoxide 兩個模組。
|
|
當開啟 PowerShell,可以看到載入時間約 2000 毫秒。透過 pwsh --noProfile
,暫時忽略 Profile 檔案的載入,以評估是不是因載入所導致的問題。
|
|
會發現載入的時間變快了。表示由於載入配置檔所導致。
參考 PowerShell 官方的 Issue,會發現有人也有類似情況發生,其中關閉防毒軟體後,載入速度就正常了。
防毒軟體的影響
我使用的防毒軟體為 Bitdefender,它提供了 掃描惡意指令碼(Scan scripts)
的功能。關閉這個功能後,載入速度恢復正常。在此,我關閉了 Bitdefender 的防禦功能(Bitdefender Shield)進行測試,會發現關閉後載入速度也有所改善。
解決方法
我們可以將信任的腳本位置加入至例外清單。首先,使用 Everything 工具進行關鍵字搜尋(如 psfzf 或 zoxide),可以找到以下路徑:
|
|
將這些路徑加入 Bitdefender 的例外清單後,每次開啟新的 PowerShell 視窗,載入速度應在 500 毫秒以內。
然而,像 posh-git 這類模組,即便關閉防毒軟體,本身載入速度就很慢。因此,即使將其加入防毒軟體的例外清單,也無法改善載入讀取速度。