回答
除了儘量減少你把你的各種配置文件腳本的內容(如下圖所示),沒有什麼可以做:
C:\PS> $profile | fl * -force
AllUsersAllHosts : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\hillr\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\hillr\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
一種方式進行檢查,看是否型材腳本導致滯後是使用-noprofile選項啓動powershell。如果啓動時間不同,則由於您的配置文件腳本。您可以使用.NET秒錶,像這樣:
function TimeThis([scriptblock]$scriptblock, $msg)
{
if (!$stopWatch)
{
$script:stopWatch = new-object System.Diagnostics.StopWatch
}
$stopWatch.Reset()
$stopWatch.Start()
. $scriptblock
$stopWatch.Stop()
if ($msg -eq $null) { $msg = "$scriptblock" }
"Execution time: $($stopWatch.ElapsedMilliseconds) mS for $msg"
}
. TimeThis {Import-Module $Module -args ~\Pscx.UserPreferences.ps1}
雖然你可以使用測量命令時,它並沒有顯示什麼是執行,你沒有命令輸出(只在一個非常詳細的時尚時間)。
那裏曾經是在早期的CTP一個問題,即安裝程序不會NGEN PowerShell的組件以及其他可能導致顯着的加載時間延遲。不過,我非常肯定,在最終的2.0安裝(以及Windows 7和Windows Server 2008 R2內置的PowerShell)中已經修復了這個問題。如果後續的目錄及其內容存在,您應該ngen'd:
dir 'C:\Windows\assembly\NativeImages_v2.0.50727_32\Microsoft.PowerShel#' -r
追查性能問題這樣可能會非常棘手,但也有一些事情可以做,以改善/解決的事情。
首先,啓動PowerShell冷與熱。至少在我的工作站上,第一次在早上運行PS時,啓動時間比後續時間要長。有沒有辦法讓它保持溫暖以最小化加載時間?
其次,使用像Process Monitor從Windows Sysinternals工作的罰款鄉親的工具。將其設置爲監視powershell.exe進程,並查看它正在做什麼,這是很長的。對我而言,我有許多來自網絡的映射網絡驅動器和共享腳本。在我的測試中,我測量了每次啓動的每個遠程腳本在啓動時的延遲時間爲2秒。
PowerShell中確實需要從磁盤加載大量資源到內存中,所以應該不用說,有你的I/O系統達到最佳性能也將有所幫助。碎片整理,確保你有足夠的免費內存等,它甚至從註冊表中查詢一些,所以你可能想要確保你的registry is completely defragged - 雖然這是一個相當長的鏡頭。
Goyuix,謝謝你指出要調查的各個領域。 +1 – MagicAndi 2010-05-15 00:15:54
它可能是完全不相關的,但我曾經在PowerShell啓動過程中有過一次大規模的停頓。
它在某種程度上涉及到的事實,我的筆記本電腦是在一個領域,我再休眠,並再次啓動它時,筆記本電腦,該域名是不是了。我用dottrace看了一下這個初創公司,只能看到在提供商的初始化過程中,代碼被卡住了。
在這種情況下重新啓動機器。也不總是發生(事實上,迄今爲止只有一次)。
使用內嵌C#加速X100最大
添加型-language CSharpVersion3 @ 「
」@
添加型@「
」 @
如果可以不使用-TypeDefinition @」
使用32位的powershell
加速×1.5
PS-run.cmd:
SET PS32 =%WINDIR%\ Syswow64資料\ WindowsPowerShell \ v1.0 \ powershell
%PS32%。\%*
- 1. 您可以在PowerShell v2腳本中設置對象的DefaultDisplayPropertySet嗎?
- 2. 加速Bash腳本
- 3. 加速sql腳本?
- 4. 增加PowerShell V2中的併發shell數
- 5. PowerShell v2添加打印機
- 6. powershell腳本添加adgroupmember
- 7. PowerShell腳本加載Aseemblies
- 8. 的PowerShell腳本中的PowerShell腳本與任務調度
- 9. 在powershell中添加腳本到文件
- 10. 加速此vba腳本
- 11. 加速UrlFetch Google App腳本?
- 12. Powershell v2 |腳本不會聲明變量,需要幫助調試
- 13. PowerShell腳本中的更正
- 14. Pentaho中的PowerShell腳本
- 15. 日誌中的PowerShell腳本
- 16. PostBuild中的PowerShell腳本
- 17. Ansible中的Powershell腳本
- 18. PowerShell腳本中的Get-SPSite
- 19. 加速powershell輸出
- 20. 在powershell腳本中運行python腳本
- 21. 如何在PowerShell v2中加載Powershell ISE 3?
- 22. Elevate PowerShell腳本
- 23. 用PowerShell腳本
- 24. C#powershell腳本
- 25. PowerShell腳本掛
- 26. PowerShell - Win2k8 - 腳本
- 27. App_Pool_Alert Powershell腳本
- 28. PowerShell腳本
- 29. 我的本地PowerShell腳本如何調用遠程PowerShell腳本?
- 30. 加速powershell的remove-netfirewallrule
Keith,被接受爲答案。抱歉耽擱了! – MagicAndi 2010-05-22 12:15:13
有沒有辦法ngen模塊加載模塊?如PowerTab和PS社區擴展? – 2010-08-23 14:36:38
是的,但手動。找到您加載的模塊所需的託管dll,並在其上運行ngen.exe。使用2.0框架中的ngen.exe 'C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727'。 – 2010-08-23 14:50:38