Yor*_*ubs 10 console powershell startup
我的 PowerShell 控制台启动时间很慢(等待时间总是超过 5 秒),并且希望获得有关故障排除步骤的建议,以找出瓶颈可能在哪里?
我已经读过,对于运行脚本来说,-NoProfile对于防止模块等加载很重要,但一般来说,我们应该如何找出导致事情变慢的原因?我没有安装很多模块,我知道从 PowerShell 3.0 开始,模块只是在启动时引用而不是完全加载(模块只有在调用给定模块的函数时才完全加载),所以我无法理解为什么启动一个裸控制台需要 5 秒以上(我的 $profile 也是空的)。
关于调试控制台启动过程的各个步骤的任何建议将不胜感激?另外,是否可能存在一些 Microsoft 或第三方工具来调试控制台启动过程中的各个步骤以查找瓶颈?
The*_*heo 10
当 PowerShell 在启动时开始变慢时,原因可能是 .NET 框架的更新。要再次加速,请ngen.exe在 PowerShell 的程序集上使用。它为程序集及其依赖项生成本机映像,并将它们安装在本机映像缓存中。
以管理员身份运行
$env:PATH = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | ForEach-Object {
$path = $_.Location
if ($path) {
$name = Split-Path $path -Leaf
Write-Host -ForegroundColor Yellow "`r`nRunning ngen.exe on '$name'"
ngen.exe install $path /nologo
}
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助
小智 7
就我而言,是 Anaconda 导致我的个人资料加载需要很长时间。我删除该区域后:
#region conda initialize
# !! Contents within this block are managed by 'conda init' !!
(& "C:\Users\USERNAME\anaconda3\Scripts\conda.exe" "shell.powershell" "hook") | Out-String | Invoke-Expression
#endregion
Run Code Online (Sandbox Code Playgroud)
从我的C:\Users\USERNAME\OneDrive\Documents\WindowsPowerShell[profile.ps1|Microsoft.PowerShell_profile.ps1]路径,加载变得即时。
但是,当然,您必须知道它不会对您的情况造成任何问题。
我的工作计算机将主要配置文件存储在远程服务器上。另一个小问题是它从 4 个不同的 profile.ps1 文件导入了重复的模块。
使用以下命令查看配置文件和模块的存储位置。删除不必要的 profile.ps1 并将所有模块移至一个目录中。
echo $env:PSModulePath
$profile | select *
Run Code Online (Sandbox Code Playgroud)
我的加载时间从 21000 毫秒减少到 1300 毫秒。
| 归档时间: |
|
| 查看次数: |
6205 次 |
| 最近记录: |