我有一台带有PowerShell V4.0的Windows 2008 R2服务器
我有一个非常简单的脚本test.ps1与此内容:
Write-host "Hello world!"
我从这样的PowerShell提示中调用这个脚本:
measure-command { powershell.exe -file .\test.ps1 }
你可以看到,我获得了极高的价值:
Days : 0 Hours : 0 Minutes : 0 Seconds : 7 Milliseconds : 992 Ticks : 79922815 TotalDays : 9,25032581018519E-05 TotalHours : 0,00222007819444444 TotalMinutes : 0,133204691666667 TotalSeconds : 7,9922815 TotalMilliseconds : 7992,2815
要么
Days : 0 Hours : 0 Minutes : 0 Seconds : 4 Milliseconds : 655 Ticks : 46556579 TotalDays : 5,38849293981481E-05 TotalHours : 0,00129323830555556 TotalMinutes : 0,0775942983333333 TotalSeconds : 4,6556579 TotalMilliseconds : 4655,6579
它把我的CPU在50%。 为什么太长? 我尝试使用-noprofile但它是一样的。
谢谢你的帮助。
Powershell加载和JIT编译吨,吨和吨的东西。 这需要大量的CPU周期和磁盘I / O。
尝试使用ngen.exe(本地映像生成器)预编译在启动过程中Powershell加载的程序集。 只是可能会改善你的启动时间。
$FrameworkDir=[Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory() $NGENPath = Join-Path $FrameworkDir 'ngen.exe' [AppDomain]::CurrentDomain.GetAssemblies() | Select-Object -ExpandProperty Location | ForEach-Object { & $NGENPath """$_""" }
在这里阅读关于ngen。