4

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

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

Есть ли способ убедиться, что приглашение для команды появляется немедленно, вместо того, чтобы мне пришлось делать этот маленький взлом?

2 ответа2

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:> $ профиль.CurrentUserAllHosts, $ профиль.CurrentUserCurrentHost, $ профиль.AllUsersAllHosts, $ профиль.AllUsersCurrentHost | тест-путь

Источник

Цитата отредактирована немного от оригинала

Проблема [может быть связана с] медленной настройкой переменных среды пользователя. Я недавно объединил изменения, которые вместо этого используют временный файл.

Источник

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

Видимо виновником здесь является Google Chrome. Если я закрою Chrome, операция завершится через пару секунд. Интересно, почему Chrome позволяет тайм-аутам этих сообщений.
Я думаю, что это может потребовать копаться в код Chrome ... Другая идея состоит в том, что приложение Chrome обычно выполняется в десятках процессов, каждая вкладка и расширение находятся в отдельной. Возможно, чем больше у вас открыто вкладок / расширений, тем больше времени потребуется для обработки системного сообщения.

Так как ваша ошибка заключается в том, что загрузка занимает много времени (но быстро после этого), попробуйте

... тогда вы видите время, необходимое для загрузки .NET, PSH и Snapins. Если нет, то скорее всего, это связано с профилем (профиль PSH или что-то вроде контакта с AD1).`

Источник

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