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, отфильтровав по PID PowerShell_ISE и посмотрев на последнее, что произошло перед остановкой рендеринга. Последнее, что он сделал, — это прочитал файлы в этом каталоге. Затем он просто сообщил «Thread Exit» в течение нескольких минут.

снимок экрана Process Monitor

Я храню большую часть своих файлов на NAS и по какой-то причине открыл один или два файла в ISE по IP, а не через подключенные сетевые диски. ISE пытался разрешить каждый из файлов и очень долго ждал тайм-аута.

решение2

В моем случае то, что тормозило запуск PowerShell ISE, было историей консоли. Это был файл размером почти 2 Гб с множеством повторяющихся команд. Удаление этого файла решило проблему:

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-файл, и теперь все в порядке.

Связанный контент