Powershell Invoke-WebRequest始终非常缓慢。我该如何解决这个问题?

时间:2018-01-15 17:53:32

标签: windows powershell

我有一台全新的联想瑜伽笔记本电脑,配备Windows 10 Pro。

我注意到,在下载和安装应该快速安装的软件时,Chocolatey似乎非常非常慢。

这让我怀疑Powershell有问题,无论是在PS本身还是在这台笔记本电脑上,我都无法排除故障。

简而言之,curl / Invoke-WebRequest一直需要大约43秒。

PS C:\WINDOWS\system32> Measure-Command { curl https://microsoft.com }


Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 43
Milliseconds      : 316
Ticks             : 433164486
TotalDays         : 0.000501347784722222
TotalHours        : 0.0120323468333333
TotalMinutes      : 0.72194081
TotalSeconds      : 43.3164486
TotalMilliseconds : 43316.4486

连续运行几次后,它会快速开始运行......几百毫秒左右。然后,如果我稍等一下,它会回到43秒。我认为它可能与防病毒有关,所以我暂时禁用了防病毒,但这没有效果。

我在WSL中尝试了Ubuntu中的curl,并没有看到这种行为:

marc@ulysses:marc$ time curl https://microsoft.com
<!--TOOLBAR_EXEMPT-->

real    0m0.738s
user    0m0.141s
sys     0m0.234s

有关故障排除/解决此问题的任何建议吗?多年后我回到Windows,甚至不知道从哪里开始。提前谢谢。

2 个答案:

答案 0 :(得分:1)

正如有些人提到的,这似乎是一个本地问题,您可以在netwerk中的其他系统上尝试这一点,看看它是您的ISP,代理还是网络相关的其他系统,更新或更新的PowerShell版本可能会有所帮助但我猜你已经在5.0;)

cls
$Results = @{
    "InvokeWeb" = @()
    "curl" = @()
}

1..4 | Foreach  {
    $Results["InvokeWeb"] += Measure-Command {Invoke-WebRequest -Uri "https://microsoft.com"}
    $Results["curl"] += Measure-Command {curl "https://microsoft.com"}
}

输出:

$Results

Name                           Value                                                                                                                                                 
----                           -----                                                                                                                                                 
InvokeWeb                      {00:00:00.6267722, 00:00:00.6085871, 00:00:00.6476704, 00:00:00.6381885}                                                                              
curl                           {00:00:00.6342388, 00:00:00.6240474, 00:00:00.6083872, 00:00:00.6594317} 

第一个请求可能慢3倍,例如1秒的其他请求将有利于缓存。

答案 1 :(得分:1)

不知道为什么会这样,并且不知道为什么它一直是43秒,但我突发奇想,我禁用了IPv6并修复了它.♀️