Windows Powershell потребує багато часу, щоб запустити перший час після входу в Windows


4

Зазвичай я використовую Windows powerhell замість командного рядка в Windows. Я помітив, що коли я запускаю його вперше після запуску Windows, потрібен тривалий час для появи підказки команд.

Щоб подбати про цю проблему, я запускаю її, а потім негайно закриваю її, а потім знову запускаю. Якщо я це роблю, це починається майже миттєво.

Чи є спосіб переконатися, що підказка команд з'являється негайно, замість того, щоб мені робити цей маленький злом?


@DaveRook Я думаю, я міг би, але не став би це запускати при вході в систему Windows автоматично? Я цього не хочу. Я хочу зняти затримку, коли запускаю її вперше після входу в Windows.
Асеем Бансал

@DaveRook Хіба це не було після того, як в Powershell було зроблено певне налаштування для завантаження чогось? Я нічого подібного не робив.
Асеем Бансал

Відповіді:


5

PowerShell спирається на .NET Framework , ви можете спробувати оновити це. Також я помітив пару проблем зі сценарієм в іншій відповіді

  • sort призведе до помилки, оскільки не всі записи мають location
  • деякі системи виграють від ngenтого, що цей сценарій ніколи не зробить

Ось моя змінена версія

$Env:PATH = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
  $pt = $_.Location
  if (! $pt) {continue}
  if ($cn++) {''}
  $na = Split-Path -Leaf $pt
  Write-Host -ForegroundColor Yellow "NGENing $na"
  ngen install $pt
}

1
Set-Alias ngen (Join-Path ([System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) ngen.exe)
[AppDomain]::CurrentDomain.GetAssemblies() |
    sort {Split-path $_.location -leaf} |
    %{
        $Name = (Split-Path $_.location -leaf)
        if ([System.Runtime.InteropServices.RuntimeEnvironment]::FromGlobalAccessCache($_))
        {
            Write-Host "Already GACed: $Name"
        }else
        {
            Write-Host -ForegroundColor Yellow "NGENing      : $Name"
            ngen $_.location | %{"`t$_"}
         }
      }

Джерело --- Завантажте код у форматі ps1

Якщо на робочій станції немає прямого доступу до Інтернету, зніміть цю опцію в IE: "Перевірити скасування сертифікату видавця" у розширеному варіанті

Ви можете повторно перевірити та переконатися, що немає профілів. Запустіть цю команду і перевірте, чи є що з них правдивим:

PS S:> $ profile.CurrentUserAllHosts, $ profile.CurrentUserCurrentHost, $ profile.AllUsersAllHosts, $ profile.AllUsersCurrentHost | тестовий шлях

Джерело

Цитата відредагована трохи від оригіналу

Проблема [може бути пов'язана з] повільним налаштуванням змінних середовищ користувача. Нещодавно я об'єднав зміну, яка натомість використовує тимчасовий файл.

Джерело

Більше про змінні середовища користувача можна знайти тут, що також говорить про те, що це може бути Chrome у коментарях:

Мабуть, винуватцем цього є Google Chrome. Якщо я закрию Chrome, операція завершиться через пару секунд. Цікаво, чому Chrome дозволяє вимкнути цей час.
Я думаю, це може зажадати копання коду Chrome ... Інша ідея полягає в тому, що програма Chrome зазвичай працює в десятках процесів, кожна вкладка та розширення - в окремому. Можливо, чим більше відкритих вкладок / розширень, тим більше часу знадобиться для обробки системного повідомлення.

Оскільки ваша помилка полягає в тому, що спочатку завантажувати потрібно довго (але швидко після цього), потрібно спробувати

... тоді ви бачите час, необхідний для завантаження .NET, PSH та Snapins. Якщо ні, то, ймовірно, це пов’язано з профілем (або PSH-профіль, або щось на зразок зв’язку з AD1). "

Джерело

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.