1

Недавно я получил новый компьютер с большим количеством лошадиных сил, и он работает очень быстро везде, кроме PowerShell.

Среда:

  • Dell XPS 8930 (i7-8700K, 32 ГБ ОЗУ, 1 ТБ NVMe SSD)
  • Windows 10 Pro с последними обновлениями (1809/10.0.17763)
  • PowerShell 5.1.17763.316 и PowerShell Core 6.1.1
  • У меня осталось достаточно памяти (> 16 ГБ), и процессор почти простаивает, пока он зависает.
  • Только Windows Defender (без другого антивируса)

Некоторые из симптомов, которые кажутся постоянными:

  • Открытие PowerShell показывает информацию об авторских правах и висит там в течение 2 минут, прежде чем показывать приглашение.
  • Я начинаю вводить команду, и текст появляется почти минуту
  • Как только появится текст, я могу изменить команду, и она будет отзывчивой.
  • Я ввожу простую команду, такую как echo 'hello' и нажимаю Enter; для появления 'hello' на экране требуется около 45 секунд и еще 45 секунд для возврата к подсказке.
  • Однажды при вводе подсказки команда реагирует, но ее выполнение снова замедляется.
  • Запустите команду dir в моем домашнем каталоге (несколько файлов / папок): примерно за 2:30 до просмотра каталога, еще 15 секунд, чтобы вернуться к приглашению.

Некоторые пытались устранить неполадки:

  • PowerShell ISE: требуется около 5 минут, чтобы получить подсказку.
  • PowerShell ISE (x86): работает быстро!
  • PowerShell (x86): также работает быстро!
  • PowerShell Core: тоже очень медленно.
  • Устаревшая консоль PowerShell: без изменений.
  • Открытие обычной командной строки и запуск powershell -NoProfile: Без изменений.
  • sfc /scannow: Проблем не найдено, перезагрузка не помогает.
  • Отключить сетевые подключения: без изменений.
  • Запустите Sysinternals procmon: Ничего очевидного, но он всегда зависает сразу после некоторых операций "Выход из потока".
  • Посмотрите на стеки потоков в Sysinternals procxp: Когда он висит, основной поток всегда находится в ntdll.dll ZwWaitForMultipleObjects .
  • Удалите WSL /Hyper-V: без изменений.
  • Запустил «Средство восстановления Microsoft .NET Framework» и перезагрузил, без изменений.
  • Проверьте C:\Users\USERNAME\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline , только один файл размером 4 КБ.
  • $PSModuleAutoloadingPreference = 'none': без изменений. Я не представляю, что выполнение одной из основных команд, таких как echo несколько раз, всегда будет пытаться загрузить модули.
  • netsh http show iplist:

IP-адреса, присутствующие в списке прослушивания IP:

127.0.0.1
  • Включить WinRM (winrm quickconfig): служба запускается, но затем не может подключиться.
    • Я вижу, что порт 5985 прослушивается PID 4 при запуске службы.
    • Брандмауэр Windows имеет две записи «Удаленное управление Windows (HTTP-In)» для порта 5985 (разрешить любой удаленный адрес в частной сети / профиле).
    • Я могу успешно telnet localhost 5985
    • После запуска службы WinRM на ответ требуется около 7 минут:

WSManFault ...

Номер ошибки: -2144108250 0x80338126 WinRM не может завершить операцию. Убедитесь, что указанное имя компьютера является действительным, что компьютер доступен по сети и что исключение брандмауэра для службы WinRM включено и разрешает доступ с этого компьютера. По умолчанию исключение брандмауэра WinRM для общедоступных профилей ограничивает доступ к удаленным компьютерам в одной локальной подсети.

Последовательность в задержках заставляет меня думать, что есть некоторый тип попытки соединения и тайм-аута, но я не знаю, что это может быть. Есть гуру с идеями?

4 ответа4

1

У меня есть Acronis True Image с защитой от вымогателей. Я обнаружил, что True Image несколько глючит / ненадежен, поэтому меня не удивит, если это виновник.

У меня также это установлено. Это не виновник.

когда я запускаю netsh http show iplist он отображает следующую информацию.

IP addresses present in the IP listen list:
-------------------------------------------

Что и должно отображаться при запуске команды.

Есть ли гуру с идеями?

Вам нужно выполнить следующую команду в командной строке PowerShell с повышенными привилегиями.

netsh http delete iplisten ipaddress=127.0.0.1

немедленно вывод команды netstat -anp tcp будет следующим:

> PS C:\> netstat -anp tcp

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    0.0.0.0:903            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:913            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49666          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49667          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49759          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49830          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:49921          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54235          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54236          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58091          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58101          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:58607          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:62401          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:843          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1120         0.0.0.0:0              LISTENING
  TCP    192.168.0.11:64811     24.105.29.76:443       ESTABLISHED
  TCP    192.168.0.11:64828     52.114.76.37:443       TIME_WAIT
  TCP    192.168.0.11:65133     23.79.18.217:443       CLOSE_WAIT
  TCP    192.168.0.11:65135     17.248.136.9:443       CLOSE_WAIT
  TCP    192.168.120.1:139      0.0.0.0:0              LISTENING
  TCP    192.168.174.1:139      0.0.0.0:0              LISTENING

Источник: Remote PowerShell, WinRM Сбои: WinRM не может завершить операцию

0

Может быть установлен другой 64-разрядный продукт, который замедляет работу PowerShell. Для проверки загрузитесь в безопасном режиме, чтобы отключить все сторонние продукты и драйверы. Если проблема не исчезнет, вы можете использовать Autoruns для отключения запуска приложений в пучках и перезагрузки , пока не найдете правильный.

Другая возможность заключается в том, что задержка вызвана установленной вами 64-битной надстройкой. Инструментом для использования здесь является Process Explorer для сравнения библиотек DLL, используемых как в 64-разрядной, так и в 32-разрядной версиях PowerShell.

В меню "Просмотр" в Process Explorer включите "Показать нижнюю панель", а в «Представлении нижней панели> DLL» выберите "DLL". Используйте Ctrl+A, чтобы сохранить списки в виде текстовых файлов, затем используйте продукт сравнения файлов, чтобы сравнить оба результата после сортировки. Вы можете упростить поиск, ограничив отображаемый список только именами DLL, щелкнув правой кнопкой мыши заголовок и выбрав «Выбрать столбцы ...».

0

Попробуйте заблокировать доступ к сети на брандмауэре. Это исключит ожидание PowerShell на внешних ресурсах.

Если вы заблокируете все сетевые подключения для Powershell, это должно выглядеть так

ПРИМЕРНЫЕ ПРАВИЛА:

Powershell        All    Yes    Block    No    %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe    Any    Any    Any    Any    Any    Any    Any    Any    Any    

Powershell2        All    Yes    Block    No    %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe    Any    Any    Any    Any    Any    Any    Any    Any    Any    

Если это не работает, проблема внутренняя. Может быть проще запустить сброс Windows 10:

  • Выберите кнопку Пуск
  • Выберите Настройки
  • Выберите Обновление и безопасность
  • Выберите Recovery
  • В разделе «Перезагрузить этот компьютер» выберите «Начать».
0

Благодаря комментарию антивируса по адресу https://stackoverflow.com/questions/45021585/powershell-hangs-on-launch ! У меня был установлен антивирус Bitdefender. Отключение не решило проблему, но удаление сделало. Я попытался переустановить, и проблема снова появилась. Добавление всего C:\ в список исключений не решило проблему.

Обновление 2/20: У меня все еще есть антивирус Bitdefender, но проблема появилась несколько недель назад.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .