10

У меня проблема с запуском PowerShell 3.0 в 64-разрядной версии Windows 7. Чтобы запустить / запустить его, требуется очень много времени. Это также довольно вяло в ответ почти на что-нибудь.

Я полагаю, что это может быть связано с тем, что мой профиль хранится в моих документах, а папка «Мои документы» синхронизируется с нашей сетью.

Можно ли как-то переместить местоположение своего профиля, чтобы я мог иметь его локально, а не по сети?

4 ответа4

17

PowerShell использует .NET Framework, вы можете попробовать обновить его.

Этот скрипт также помог моей скорости

$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

Приведенный выше ответ, в котором говорится о NGEN, сократил время запуска с 30 секунд до 5.

Однако я также видел случаи, когда нажатие Ctrl-C после нескольких секунд ожидания выводило меня на экран, и я уже выполнил трюк с NGEN выше, и в этом случае я подозреваю, что мои сценарии замедляют меня.

Если прошло более 30 секунд, и вы уже попробовали описанный выше трюк NGEN, наиболее распространенная причина заключается в том, что для запуска сценариев PowerShell для вашего личного и системного профиля требуется много времени. Если вы жалуетесь на задержку менее 10 секунд, то, вероятно, медленно запускается .net.

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

0

Недавно у меня возникла похожая проблема при разработке бинарного модуля PowerShell. Моя консоль была очень медленной в ответ почти на все. Сценарий Стивена Пенни работал для меня, но только в случае PowerShell. Я не очень понял, что происходит в его сценарии; так что я пошел построчно, чтобы увидеть, где моя проблема.

Это закончилось тем, что было с моей переменной окружения пути. У меня была UNC-строка пути в моей переменной пути, и была вызвана задержка, потому что PowerShell будет открывать / закрывать соединение для каждого выполнения (т.е. каждый раз, когда вы нажимаете клавишу ввода).

0

Есть несколько разных мест по умолчанию, в которых можно хранить профиль Powershell.

  • Первое местоположение - это глобальное местоположение, которое будет полезно, если вы хотите, чтобы у всех пользователей был настроенный профиль Powershell. Этот профиль должен быть размещен в

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • Второе местоположение предназначено для локального профиля и будет специфичным для каждой учетной записи пользователя. Этот файл переопределяет файл глобальной конфигурации и должен быть помещен в

    C:\Username\My Documents\WindowsPowerShell\Profile.ps1
    

В качестве теста попробуйте изменить глобальный профиль Powershell (расположенный в system32) и посмотреть, не ускоряет ли это процесс. Если это произойдет, вы будете знать, что медлительность как-то связана с сетью, и вы можете двигаться дальше оттуда.

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