Медленный запуск Powershell в Windows 10

7

У меня проблема с медленным запуском PowerShell в Windows 10 (версия 1703 - Creators Update)

Мои технические характеристики (довольно быстрая машина): Intel i5-7440HQ (четырехъядерный) / 32 ГБ оперативной памяти DDR4 / 512 жестких дисков Samsung SSD.

Я пытался обойти профиль и политику выполнения, но это ничего не меняет:

powershell -noprofile -ExecutionPolicy Bypass (Measure-Command {powershell "Write-Host 1"}) .TotalSeconds

6,228067

У моих друзей такой же ноутбук с Windows 10 без Creators Update запускается PowerShell менее чем за 0,5 сек.

Также попытался сделать компиляцию с ngen.exe, но это не помогло:

$env:path = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
  if (! $_.location) {continue}
  $Name = Split-Path $_.location -leaf
  Write-Host -ForegroundColor Yellow "NGENing : $Name"
  ngen install $_.location | % {"`t$_"}
}

Любая идея, как я могу исследовать эту проблему?

Привет

mike
источник
Вы должны начать с проверки вашего профиля профиля, чтобы увидеть, если там что-то работает, что задерживает запуск. Мой вывод составляет 1,2774795 секунд. Кроме того, какая машина, процессор, память, другие вещи работают?
Julian Knight
5
PowerShell всегда медленно запускается. Но г-жа игнорирует эти жалобы и только ответ "PowerShell быстро"
magicandre1981
Как видите, опция -noprofile установлена. Нет разницы.
mike
Я вижу это. отправьте это MS, но они игнорируют любые сообщения о том, что powershell работает медленно
magicandre1981
1
Опять же, для меня PowerShell также всегда медленно. спросите это у Microsoft.
magicandre1981

Ответы:

2

Вы можете создать ярлык для powershell.exe, щелкнув по нему правой кнопкой мыши & gt; Свойства, перейдите на вкладку «Параметры», нажмите «Использовать устаревшую консоль». Моя программа чтения с экрана (magic и zoomtext) не смогла перенести «новую» консоль, которая пришла с осенним обновлением (Powershell был очень медленным).

Peter Bakker
источник
-1

У меня была такая же проблема в течение довольно долгого времени, пока PowerShell не начал сбой при запуске со следующей ошибкой:

Exception:
System.OutOfMemoryException: Array dimensions exceeded supported range.
   at System.Collections.Generic.List`1.set_Capacity(Int32 value)
   at System.Collections.Generic.List`1.EnsureCapacity(Int32 min)
   at System.Collections.Generic.List`1.Add(T item)
   at System.IO.File.InternalReadAllLines(String path, Encoding encoding)
   at Microsoft.PowerShell.PSConsoleReadLine.<ReadHistoryFile>b__67_0()
   at Microsoft.PowerShell.PSConsoleReadLine.WithHistoryFileMutexDo(Int32 timeout, Action action)
   at Microsoft.PowerShell.PSConsoleReadLine.DelayedOneTimeInitialize()
   at Microsoft.PowerShell.PSConsoleReadLine.Initialize(Runspace runspace, EngineIntrinsics engineIntrinsics)
   at Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinsics engineIntrinsics)
-----------------------------------------------------------------------

Это привело меня к существующей проблеме Github: https://github.com/lzybkr/PSReadLine/issues/673

Я пытался удалить файл истории в ~\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ к тому времени было более 6 ГБ, и после этого консоль PowerShell начала открываться довольно быстро.

Возможно, медлительность, с которой вы сталкиваетесь, заключается в том, что PowerShell пытается прочитать большой файл истории (который еще недостаточно велик, чтобы вызвать OutOfMemory ).

takemyoxygen
источник