Powershell sehr langsam zu öffnen / zu reagieren

11

Ich habe ein Problem beim Ausführen von PowerShell 3.0 unter Windows 7 64-Bit. Das Öffnen / Starten beim Ausführen dauert sehr lange. Es ist auch ziemlich träge als Reaktion auf fast alles.

Ich glaube, dies kann daran liegen, dass mein Profil in meinen Dokumenten gespeichert ist und der Ordner "Meine Dokumente" mit unserem Netzwerk synchronisiert ist.

Gibt es eine Möglichkeit, den Speicherort meines Profils zu verschieben, damit ich es lokal anstatt über das Netzwerk haben kann?

czuroski
quelle
1
Es ist auch für mich langsam und mein Profil ist auf direkten Laufwerkszugriff. Außerdem wird es einmal gelesen, vom Betriebssystem zwischengespeichert und nach dem Start geschlossen, damit das Netzwerk nichts beeinflusst. Dies ist nur ein schlechter Versuch der MS, das Rad zu wiederholen, aber wieder quadratisch.
v.oddou

Antworten:

17

PowerShell basiert auf .NET Framework . Sie können versuchen, dies zu aktualisieren.

Dieses Skript hat mir auch geholfen, schneller zu werden

$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
}
Steven Penny
quelle
1
Vielen Dank! Was für ein großer Unterschied, nachdem ich dieses Skript ausgeführt habe.
WeSam Abdallah
3
Was tut es?
Pureferret
2
ngen.exe installieren: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
Ich bin… überrascht und beeindruckt :-)
Chris F Carroll
1

Die obige Antwort, die über NGEN spricht, reduzierte meine Startzeit von über 30 Sekunden auf unter 5 Sekunden.

Ich habe jedoch auch Fälle gesehen, in denen das Drücken von Strg-C nach ein paar Sekunden Wartezeit mich zu einer Eingabeaufforderung führt, und ich habe bereits den oben genannten NGEN-Trick ausgeführt. In diesem Fall vermute ich, dass meine Skripte mich verlangsamen.

Wenn es länger als 30 Sekunden dauert und Sie den oben genannten NGEN-Trick bereits ausprobiert haben, ist der häufigste Grund, dass das Starten Ihrer PowerShell-Skripte für Ihr persönliches und Systemprofil lange dauert. Wenn Sie sich über eine Verzögerung von weniger als 10 Sekunden beschweren, ist es wahrscheinlich .net, das nur langsam startet.

Wenn Sie sich auf einer VM befinden und der VM-Host wie die meisten überbereiteten und unterversorgten VM-Umgebungen völlig ausgelastet und E / A-gebunden ist, dann ist es das.

Warren P.
quelle
0

Es gibt einige verschiedene Standardorte, an denen das Powershell-Profil gespeichert werden kann.

  • Der erste Speicherort ist der globale Speicherort und ist nützlich, wenn alle Benutzer ein benutzerdefiniertes Powershell-Profil haben sollen. Dieses Profil sollte in platziert werden

    C:\WINDOWS\system32\WindowsPowerShell\v1.0\Profile.ps1
    
  • Der zweite Speicherort ist für das lokale Profil und würde für jedes Benutzerkonto spezifisch sein. Diese Datei überschreibt die globale Konfigurationsdatei und sollte in platziert werden

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

Versuchen Sie als Test, das globale Powershell-Profil (in system32) zu ändern, und prüfen Sie, ob dies die Dinge beschleunigt. Wenn dies der Fall ist, wissen Sie, dass die Langsamkeit irgendwie auf das Netzwerk zurückzuführen ist, und können von dort aus vorwärts gehen.

jmreicha
quelle
0

Vor kurzem hatte ich ein ähnliches Problem bei der Entwicklung eines binären PowerShell-Moduls. Meine Konsole reagierte extrem langsam auf fast alles. Steven Pennys Skript funktionierte für mich, aber nur pro Instanz von PowerShell. Ich verstand nicht wirklich, was in seinem Drehbuch vorging; Also ging ich Zeile für Zeile, um zu sehen, wo mein Problem war.

Es endete mit meiner Pfadumgebungsvariablen. Ich hatte eine UNC-Pfadzeichenfolge in meiner Pfadvariablen und die Verzögerung wurde verursacht, da PowerShell die Verbindung bei jeder Ausführung öffnet / schließt (dh jedes Mal, wenn Sie die Eingabetaste drücken).

Aaron Ray
quelle
2
Was ist UNC? Wie hast du das behoben?
Tomáš Zato - Wiedereinsetzung Monica
1
@ TomášZato - Die Universal Naming Convention (UNC) ist ein Pfad, der Schrägstriche vorwärts oder rückwärts enthält. Ich verstehe, dass dieser Kommentar 4 Jahre zu spät ist, dachte ich, Sie würden es wissen wollen, da sich niemand die Mühe gemacht hat, Ihre Frage zu beantworten. Ich würde annehmen, dass der Autor den UNC-Pfad aus seiner Systemvariablen entfernt hat.
Ramhound
@ Ramhound Danke!
Tomáš Zato - Wiedereinsetzung Monica