Powershell дуже повільно відкриває / реагує


12

У мене виникла проблема із запуском PowerShell 3.0 в ОС Windows 7 64-біт. Щоб запустити / запустити його, потрібно дуже багато часу. Він також досить млявий у відповідь майже на що-небудь.

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

Чи є спосіб перенести розташування мого профілю, щоб я міг мати місцеве місце замість мережі?


1
це також повільно для мене, і мій профіль знаходиться в прямому доступі до диска. також він читається один раз, кешується ОС і закривається після запуску, так що мережа чи ні, це не повинно впливати ні на що. це лише погана спроба MS переробити колесо, але знову ж таки квадратне.
v.oddou

Відповіді:


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
Дякую! Яка велика різниця після запуску цього сценарію.
WeSam Абдалла

3
Що це робить?
Пюреферрет

2
ngen.exe встановити:Generate native images for an assembly and its dependencies and install them in the Native Images Cache. If /queue is specified compilation job is queued up. If a priority is not specified, the default priority used is 3.
VertigoRay

Я… здивований і вражений :-)
Кріс Ф. Керролл

1

Вищеназвана відповідь, що розмова про NGEN скоротила час мого запуску з понад 30 секунд до менше 5.

Однак я також бачив випадки, коли потрапляння на Ctrl-C після зачекання декількох секунд наштовхує мене на підказку, і я вже робив фокус NGEN вище, і в цьому випадку я підозрюю, що мої сценарії мене уповільнюють.

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

Якщо ви перебуваєте в VM, а хостинг VM повністю зведений і пов'язаний з IO, як і більшість середовищ, що надмірно захищені, і недостатньо забезпечені ресурсами VM, то це все.


0

Існує кілька різних місць за замовчуванням, в яких можна зберігати профіль Powershell.

  • Перше місце - це глобальне розташування, і воно буде корисним, коли ви хочете, щоб усі користувачі мали індивідуальний профіль Powershell. Цей профіль слід розмістити

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • Друге місце розташування - для локального профілю та має конкретний характер для кожного облікового запису користувача. Цей файл замінює глобальний файл конфігурації, і його слід розмістити в

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

В якості тесту спробуйте змінити глобальний профіль Powershell (розташований у system32) і перевірте, чи прискорює це ситуація. Якщо це так, ви знаєте, що повільність якимось чином пов’язана з мережею, і ви можете рухатись звідти вперед.


0

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

Це врешті-решт було з моєю екологічною змінною. У моїй змінній шляху був рядок шляху UNC, і затримка була викликана, оскільки PowerShell відкриє / закриє з'єднання для кожного виконання (тобто кожного разу, коли ви натискаєте клавішу введення).


2
Що таке UNC? Як ви це виправили?
Томаш Зато - Відновити Моніку

1
@ TomášZato - Універсальна конвенція про іменування (UNC) - шлях, який містить перерізи вперед або назад. Я розумію, що цей коментар запізнився на 4 роки, я подумав, що ви хочете знати, оскільки ніхто ніколи не намагався відповісти на ваше запитання. Я б припустив, що автор видалив шлях UNC зі своєї системної змінної.
Рамхаунд

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