Verbesserungen an der PowerShell-EnginePowerShell Engine Improvements

Die folgenden Verbesserungen an der PowerShell-Kern-Engine wurden in WMF 5.1 implementiert:The following improvements to the core PowerShell engine have been implemented in WMF 5.1:

LeistungPerformance

In einigen wichtigen Bereichen wurde die Leistung verbessert:Performance has improved in some important areas:

  • StartStartup
  • Das Pipelining zu Cmdlets wie „ForEach-Object“ und „Where-Object“ erfolgt ca. 50 % schneller.Pipelining to cmdlets like ForEach-Object and Where-Object is approximately 50% faster

Einige Beispiele für Verbesserungen (die Ergebnisse variieren je nach Hardware):Some example improvements (your results may vary depending on your hardware):

SzenarioScenario Zeit (ms) in 5.05.0 Time (ms) Zeit (ms) in 5.15.1 Time (ms)
powershell -command "echo 1" 900900 250250
Erste Ausführung von PowerShell überhaupt: powershell -command "Unknown-Command"First ever PowerShell run: powershell -command "Unknown-Command" 30.00030000 13.00013000
Erstellung des Caches für die Befehlsanalyse: powershell -command "Unknown-Command"Command analysis cache built: powershell -command "Unknown-Command" 70007000 520520
1..1000000 | % { } 14001400 750750

Hinweis: Eine Änderung im Zusammenhang mit dem Start kann sich möglicherweise auf einige (nicht unterstützte) Szenarien auswirken.Note One change related to startup might impact some unsupported scenarios. PowerShell liest nicht mehr die Dateien des Typs $pshome\*.ps1xml. Diese Dateien wurden in C# konvertiert, um den Datei- und CPU-Overhead beim Verarbeiten der XML-Dateien zu reduzieren.PowerShell no longer reads the files $pshome\*.ps1xml -- these files have been converted to C# to avoid some file and CPU overhead of processing the XML files. Die Dateien sind zur Unterstützung der parallelen Verwendung von Version 2 noch vorhanden. Wenn Sie also den Inhalt der Dateien ändern, hat dies keine Auswirkung auf Version 5, sondern nur auf Version 2.The files still exist to support V2 side-by-side, so if you change the file contents, it will not have any effect to V5, only V2. Beachten Sie, dass das Ändern dieser Dateien zu keiner Zeit ein unterstütztes Szenario war.Note that changing the contents of these files was never a supported scenario.

Eine andere sichtbare Änderung ist, wie PowerShell die exportierten Befehle und andere Informationen für Module zwischenspeichert, die auf einem System installiert sind.Another visible change is how PowerShell caches the exported commands and other information for modules that are installed on a system. Zuvor wurde dieser Cache im Verzeichnis $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\CommandAnalysis gespeichert.Previously, this cache was stored in the directory $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\CommandAnalysis. In WMF 5.1 befindet sich der Cache ausschließlich in der Datei $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\ModuleAnalysisCache.In WMF 5.1, the cache is a single file $env:LOCALAPPDATA\Microsoft\Windows\PowerShell\ModuleAnalysisCache. Unter Die Datei „ModuleAnalysisCache“ finden Sie weitere Details.See Module Analysis Cache for more details.