PowerShell 7.2.5
Copyright (c) Microsoft Corporation.
https://aka.ms/powershell
Type 'help' to get help.
A new PowerShell stable release is available: v7.3.3
Upgrade now, or check out the release page at:
https://aka.ms/PowerShell-Release?tag=v7.3.3
Loading personal and system profiles took 20752ms.
差不多这个水平,不知道为什么
让new bing写了个启动的脚本,替换了之前的
# 定义一个函数来测试网络连接
function Test-Network {
param(
[string]$Url = '检测的URL',
[int]$Timeout = 500
)
try {
# 使用 Invoke-WebRequest 命令来发送 HTTP 请求,并设置超时时间
$response = Invoke-WebRequest -Uri $Url -TimeoutSec ($Timeout / 1000) -UseBasicParsing -ErrorAction Stop
# 检查响应状态码是否为 204
if ($response.StatusCode -eq 204) {
# 网络正常,返回 $true
return $true
}
else {
# 网络异常,返回 $false
return $false
}
}
catch {
# 发生错误,返回 $false
return $false
}
}
# 定义一个函数来设置代理
function Set-Proxy {
param(
[string]$Proxy = 'http://127.0.0.1:7890'
)
# 使用 netsh 命令来设置系统级别的代理,并忽略错误输出
netsh winhttp set proxy $Proxy *>$null
}
# 定义一个函数来取消代理
function Unset-Proxy {
# 使用 netsh 命令来取消系统级别的代理,并忽略错误输出
netsh winhttp reset proxy *>$null
}
# 定义一个函数来加载模块(根据您的实际情况修改)
function Load-Modules {
# 超出附言限制,略
}
# 调用 Test-Network 函数来测试网络连接情况,并将结果赋值给变量 $networkStatus
$networkStatus = Test-Network
# 判断变量 $networkStatus 的值是否为 $true
if ($networkStatus) {
# 如果为 $true ,表示网络正常,直接调用 Load-Modules 函数来加载模块,并结束脚本执行
Load-Modules
exit
}
else {
# 如果为 $false ,表示网络异常,尝试调用 Set-Proxy 函数来设置代理,并再次调用 Test-Network 函数来测试网络连接情况,并将结果赋值给变量 $proxyStatus
Set-Proxy
$proxyStatus = Test-Network
# 判断变量 $proxyStatus 的值是否为 $true
if ($proxyStatus) {
# 如果为 $true ,表示代理有效,调用 Load-Modules 函数来加载模块,并结束脚本执行
Load-Modules
exit
}
else {
# 如果为 $false ,表示代理无效,调用 Unset-Proxy 函数来取消代理,并抛出一个异常,提示网络问题,并不加载模块
Unset-Proxy
throw 'Network error: cannot access Google with or without proxy.'
}
}
但是加载模块的过程是同步的,一共要花费2000多ms,有办法继续优化吗?
感觉甚至不如js
1
statumer 2023-03-14 20:08:17 +08:00
holy shit, 20s? 别用 pwsh 了。
|
2
Gavrain 2023-03-14 20:16:35 +08:00
Windows PowerShell
版权所有( C ) Microsoft Corporation 。保留所有权利。 安装最新的 PowerShell ,了解新功能和改进! https://aka.ms/PSWindows 加载个人及系统配置文件用了 872 毫秒。 不知道题主用的什么环境啥主题,win11 才装的问题不大。 |
3
richardzhao12138 2023-03-14 20:21:28 +08:00
PowerShell 7.4.0-preview.1
Loading personal and system profiles took 10596ms. 我的也慢 |
4
gloye 2023-03-14 20:29:06 +08:00
|
5
yaoyao1128 2023-03-14 20:30:28 +08:00 via iPhone
github 没正常连接到吧……
|
6
systemcall OP @gloye #4
考虑了网络原因,问了一下 new bing ,让它写了个网络判断的脚本,现在一般情况下是 2000 多 ms 可以启动,第二次会快不少,不知道是 new bing 写的代码的问题,还是别的什么问题,还是 pwsh 本来就这么慢,反正是微软那边的问题 |
7
systemcall OP 附言写不下了,补充一下我现在的真正的初始化代码:
Import-Module PSReadLine Import-Module posh-git oh-my-posh init pwsh --config 'C:\Users\admin\AppData\Local\Programs\oh-my-posh\themes\catppuccin_mocha.omp.json' | Invoke-Expression Set-PSReadLineOption -PredictionSource History Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward Import-Module DirColors 不知道哪里有问题 |
8
rpish 2023-03-14 21:22:12 +08:00
已经转到 starship ,这个模块加载就是那么耗时,没办法。
|
9
Tumblr 2023-03-14 22:12:17 +08:00
这个模块不至于这么慢啊,我也有在用这个模块,冷启动大概 2 3 秒,热启动 1 秒左右(使用中偶尔会卡一下,1 秒内)。
我是这样调用的:oh-my-posh init pwsh -c 'D:\Program Files\oh-my-posh\themes\agnosterplus.omp.json' | Invoke-Expression |
10
anguliuyun 2023-03-14 22:17:53 +08:00
推荐一个 rust 写的跨平台 shell - [nushell]( https://github.com/nushell/nushell)
|
11
FanyFull 2023-03-14 22:48:11 +08:00 via Android
我也感觉很慢,而且,同样很慢的,还有 windows 上的 neovim.
|
12
LokiSharp 2023-03-14 23:47:56 +08:00
pwsh 本来启动就慢 Emmmmm
|
13
billly 2023-03-15 00:25:15 +08:00
我之前试过,也是很慢,就不用了
|
14
Moha 2023-03-15 09:55:31 +08:00
我一直都这么慢,真是醉了...........
|
15
systemcall OP @Tumblr #9
我也觉得奇怪。我是 12 代 i7 的电脑,不应该这么慢 |
16
hhjj3388 2023-03-15 11:12:57 +08:00
我的 i5 9400 的
PowerShell 7.3.0-preview.8 A new PowerShell preview release is available: v7.4.0-preview.2 Upgrade now, or check out the release page at: https://aka.ms/PowerShell-Release?tag=v7.4.0-preview.2 Loading personal and system profiles took 515ms. ﮫ 0ms 11:12 AM ❯ |
17
hez2010 2023-03-16 08:51:43 +08:00
用旧版的 oh-my-posh 2.x ,旧版的 oh-my-posh 是 powershell 写的,加载速度很快,而新版本的 oh-my-posh 是用 go 写的,初始化巨慢无比。
|
18
isajdhs 2023-07-07 14:45:16 +08:00
在项目 issue 见过这个问题,好像是因为启动时 Windows defender 会扫描 oh-my-posh ,加入白名单就行了,不过我现在用的 rust 写的 satrship ,主题较少
|