Windows Server 2015和Windows 10上的“下载更新0%”问题

时间:2020-01-09 10:46:26  来源:igfitidea点击:

我在Windows Server 2015(Windows 10 RTM)上的Windows Update service中遇到了一个有趣的“功能”或者“bug”。如果我们不使用内部WSUS服务器,并且操作系统必须直接从Internet上的Microsoft更新服务器进行更新,则当我们通过代理服务器在Windows server 2015中下载更新时,下载过程将停止在0%( 下载更新0%)。

有趣的是,Windows更新客户端已经能够发送/下载更新元数据(所需更新的列表已成功形成),但是没有一个可以下载。

让我们创建并打开WindowsUpdate.log使用Get-WindowsUpdateLog cmdlet。

2016/11/11 12:32:47.8312332 123 3542 DownloadManager BITS job initialized: JobId = {E3BB42A1C-42B4-221B-1320-8AB433CE1965E}
2016/11/11 12:32:47.8436054 123 3542 DownloadManager Downloading from http://download.windowsupdate.com/c/msdownload/update/software/defu/2016/09/nis_engine_1af0e4b80bf4028f8dac56ebf186b392e4e72486.exe to C:\Windows\SoftwareDistribution\Download\f71ddf93ec2d087c819cf75c55ddfda2af0e4b80bf4028f8dac56ebf186b392e4e72486 (full file)
2016/11/11 12:32:47.8452605 123 3542 DownloadManager New download job {E3BB42A1C-42B4-221B-1320-8AB433CE1965E} for UpdateId F608EDA4-2E84-433A-A8C9-8117411F91A8.200
2016/11/11 12:32:47.8545291 123 3542 DownloadManager Download job E3BB42A1C-42B4-221B-1320-8AB433CE1965E resumed.
2016/11/11 12:32:47.8734449 123 3542 DownloadManager Failed to connect to the DO service; (hr = 80040154)
2016/11/11 12:32:47.8734462 123 3542 DownloadManager GetDOManager() failed, hr=80246008, hrExtended=80040154
2016/11/11 12:32:47.8734472 123 3542 DownloadManager Failed creating DO job with hr 80246008
2016/11/11 12:32:47.8772521 123 3542 DownloadManager DO download failed with error 80246008[Extended: 80040154**, falling back to BITS and retrying with new Download Job.

如我们所见,BITS无法下载错误为 80246008的文件(SUS_E_DM_failto connecttobits–请参阅Windows update错误代码的完整列表)。

事实证明,在Windows server 2015 RTM(10.0.14393)中,Internet Explorer的代理服务器设置的工作方式与以前的Windows版本不同。为了使Windows Update客户端可以通过代理访问Internet,必须强制设置winhttp的系统代理。

显示WinHTTP的当前代理服务器设置:

netsh winhttp show proxy

当前WinHTTP代理设置:

直接访问(无代理服务器)。

如我们所见,WinHTTP的代理设置没有设置。在Internet Explorer中已在用户级别配置代理,但在系统级别(WinHTTP)中未配置代理。此配置导致与Windows Update的连接失败。

我们可以按如下方式设置WinHTTP的系统代理参数:

netsh winhttp set proxy proxy-server="192.168.100.24:3128" bypass-list="*.theitroad.local"

或者像这样,通过从IE导入设置(Internet Explorer中的代理设置必须手动设置或者使用GPO配置):

netsh winhttp import proxy source=ie

更改代理设置后,重新启动Windows Update服务:

Restart-service wuauserv

在指定了WinHTTP的代理之后,Windows Server 2015开始从Microsoft Update Server下载更新。

RTM版本的Windows 10(RTM版本的Windows Update Agent–10.0.14393.0)也会出现相同的问题。

。如果我们从Microsoft update Catalog(2015年11月以后发布)手动下载并安装最新的累计更新,即使我们不设置WinHTTP proxy,这些更新也会正常下载和安装。根据微软的信息,这个错误在Windows更新代理10.0.14393.187及更高版本中已经修复。

另外,别忘了,我们将无法通过需要身份验证的代理服务器获取更新,因为Windows Update客户端不支持代理身份验证(与PowerShell不同)。为了使Windows Update正常工作,必须允许匿名访问代理服务器上的Microsoft Update服务器。URL列表如下所示:

  • *.microsoft.com

  • microsoft.com

  • *.windowsupdate.com

  • windowsupdate.com

  • *.trafficmanager.net

  • trafficmanager.net