WSUS内容文件夹不保留更新

在这个问题上,我一直在挠头,而我所做的任何事情都不能解决问题

问题:

WSUS的“WSUSContent”文件夹是自删除更新,并将整体大小降至<5GB。 原始大小超过300GB。 更新哪里去了? 我们没有发起WSUSContent清理,也没有过去。

尝试解决:

WSUSutil /reset. Reinstall WSUS service from scratch. Migrated from internal database to remote SQL database. 

更多信息:

  • WSUS数据库位于远程SQL服务器上
  • WSUSutil重置重build整个内容文件夹超过300GB。
  • WSUS活动了一段时间(1-2周),然后在一天内突然停止工作(不幸的是,我们不知道这是什么时候发生的)
  • 在发生这个问题之后,我们得到WSUS缺less内容的通用800代码:

2015-03-30 14:19:19设置FATAL:GetClientUpdateUrl失败,错误= 0x8024D009 2015年3月30日14:25:19:174 1184 195c设置基于2015年wuident 2015年/ SKIP指令跳过自更新检查-03-30 14:25:19:174 1184 195c设置自更新检查完成。 自更新不是必需的。

  • 没有计划的任务来“清理”更新,我们自动批准所需技术的所有更新(Windows 7,8.1,Server 2012,SQL 2012以及其他让我无法理解的更新)。
  • 我们已经使用第三方工具来检查我们的WSUS设置,他们都返回声称设置正常,没有发现问题。
  • 我们有WSUS在HTTP和HTTPS上工作,SSL证书是正确的,在date/有效。
  • 当使用pipe理员工具连接到WSUS时,控制台会定期中断并显示一个红色的“X”,并指出远程API停止工作? (我正在粘贴WSUSpipe理控制台遇到的另一个错误):

WSUSpipe理控制台遇到意外的错误。 这可能是一个短暂的错误; 尝试重新启动pipe理控制台。 如果这个错误持续存在,

尝试通过删除%appdata%\ Microsoft \ MMC下的wsus文件来删除控制台的持久偏好设置。

System.Collections.Generic.KeyNotFoundException – 给定的键不在字典中。

源mscorlib

堆栈跟踪:在Microsoft.UpdateServices.UI.SnapIn.Pages.UpdatesListPage.GetUpdateRow(WsusUpdate更新)在Microsoft.UpdateServices.UI.SnapIn.Pages.UpdatesListPage System.Collections.Generic.Dictionary`2.get_Item(TKey键)。 GetListRows()

  • 我已经在SF上跟着这些,没有运气:

WSUS没有收到更新? & WSUS,已安装,不适用

互联网上的许多其他人也试图find答案。

  • WSUS服务器是域的一部分,并澄清,当我运行wsusutil / reset时,连接的所有客户端都获得更新,连接不成问题,WSUS内容就会消失而无踪影。

Windows日志文件“红色”条目:

这些都是我试图调查的关键日志条目,除非我忽略了某些东西,否则也无济于事。

  • 376 1b0c其他警告:假设networking成本不被支持,因为尝试获取句柄wcmapi.dll失败
  • 报告警告:Reporter无法上传hr = 8007000d的事件。
  • 警告:无法将事件批处理转换为Web服务事件:0x8007000d
  • 致命:GetClientUpdateUrl失败,err = 0x8024D009
  • 警告:未能获得来自NLM的Wu豁免信息,假设不豁免,错误= 0x80240037
  • 代理*在线=否; 忽略下载优先级=否< – Online = No; ???

任何帮助将不胜感激,因为这是非常不寻常的事情发生。

所以,奇怪的修复。

我的WSUSContent文件夹有0.99GB,并在手动服务器清理(没有select不需要的更新文件)等待大约45分钟,然后select不需要的更新文件。另一分钟过去了,WSUSContent文件夹在100GB(从0.99GB,互联网速度不够快,在<45分钟内抢到99GB)和50,000个更新被批准。

它虽然工作。 非常非常奇怪 日志中没有要求清理,空间也不是问题。 多么奇怪。

谢谢大家的build议!

我可以回应@Proxy说:

奇怪的修复…非常非常奇怪。 多么怪异

我的三星笔记本电脑有Windows 8.1的更新。 它有一个被清除的感染。 目前的date是05/16/2017,但最近的Windows更新是在2年前的2015年。

清除恶意软件后,Windows更新无效。 它会挂起,在c:\windows\WindowsUpdate.log没有任何进展,但占用了一个核心的100%。

2年过期的一个后果,可能是相关的,即GWX(获取Windows 10)仍然运行在这台笔记本电脑上,即使该报价已经过了1年以前。

这台笔记本电脑的另一个值得注意的事情是我换了两次主板。 第一次,它是一天多次崩溃。 第二个主板工作正常。 所以这些崩溃在这里可能有影响。

尝试几乎所有的东西后,这是什么工作:Windows cleanmgr.exe又名“磁盘清理”又名“通过删除不必要的文件清理磁盘空间”。

我select了:

  • 临时networking文件
  • debugging转储文件(看起来像他们仍然在那里,虽然)
  • 系统错误内存转储文件(虽然看起来像他们仍然存在)
  • 临时文件

之后,并重新启动,Windows Update工作。 多么奇怪。

以下是我尝试过的一些突出的解决scheme无效:

 :: consider carefully /ResetBase -- it prevents you from un-installing windows updates Dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase Dism /Online /Cleanup-Image /RestoreHealth sfc /scannow 

我必须不止一次地运行。 每个步骤都修复了腐败。 直到他们通过没有发现腐败。

不过,Windows Update将无法正常工作。 还挂着。

走得更远,我尝试了这个修复方法,来自sevenforums的“Option 2” https://www.sevenforums.com/tutorials/91738-windows-update-reset.html

 Reset_Reregister_Windows_Update_Components.bat 

以下是该batch file的内容:

 @echo off :: Created by: Shawn Brink :: http://www.sevenforums.com :: Tutorial: http://www.sevenforums.com/tutorials/91738-windows-update-reset.html set b=0 :bits set /ab=%b%+1 if %b% equ 3 ( goto end1 ) net stop bits echo Checking the bits service status. sc query bits | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto bits ) goto loop2 :end1 cls echo. echo Failed to reset Windows Update due to bits service failing to stop. echo. pause goto Start :loop2 set w=0 :wuauserv set /aw=%w%+1 if %w% equ 3 ( goto end2 ) net stop wuauserv echo Checking the wuauserv service status. sc query wuauserv | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto wuauserv ) goto loop3 :end2 cls echo. echo Failed to reset Windows Update due to wuauserv service failing to stop. echo. pause goto Start :loop3 set app=0 :appidsvc set /a app=%app%+1 if %app% equ 3 ( goto end3 ) net stop appidsvc echo Checking the appidsvc service status. sc query appidsvc | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto appidsvc ) goto loop4 :end3 cls echo. echo Failed to reset Windows Update due to appidsvc service failing to stop. echo. pause goto Start :loop4 set c=0 :cryptsvc set /ac=%c%+1 if %c% equ 3 ( goto end4 ) net stop cryptsvc echo Checking the cryptsvc service status. sc query cryptsvc | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto cryptsvc ) goto Reset :end4 cls echo. echo Failed to reset Windows Update due to cryptsvc service failing to stop. echo. pause goto Start :Reset Ipconfig /flushdns Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat" sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) cd /d %windir%\system32 Ren %systemroot%\system32\catroot2 catroot2.bak regsvr32.exe /s atl.dll regsvr32.exe /s urlmon.dll regsvr32.exe /s mshtml.dll regsvr32.exe /s shdocvw.dll regsvr32.exe /s browseui.dll regsvr32.exe /s jscript.dll regsvr32.exe /s vbscript.dll regsvr32.exe /s scrrun.dll regsvr32.exe /s msxml.dll regsvr32.exe /s msxml3.dll regsvr32.exe /s msxml6.dll regsvr32.exe /s actxprxy.dll regsvr32.exe /s softpub.dll regsvr32.exe /s wintrust.dll regsvr32.exe /s dssenh.dll regsvr32.exe /s rsaenh.dll regsvr32.exe /s gpkcsp.dll regsvr32.exe /s sccbase.dll regsvr32.exe /s slbcsp.dll regsvr32.exe /s cryptdlg.dll regsvr32.exe /s oleaut32.dll regsvr32.exe /s ole32.dll regsvr32.exe /s shell32.dll regsvr32.exe /s initpki.dll regsvr32.exe /s wuapi.dll regsvr32.exe /s wuaueng.dll regsvr32.exe /s wuaueng1.dll regsvr32.exe /s wucltui.dll regsvr32.exe /s wups.dll regsvr32.exe /s wups2.dll regsvr32.exe /s wuweb.dll regsvr32.exe /s qmgr.dll regsvr32.exe /s qmgrprxy.dll regsvr32.exe /s wucltux.dll regsvr32.exe /s muweb.dll regsvr32.exe /s wuwebv.dll regsvr32 /s wudriver.dll netsh winsock reset :Start net start bits net start wuauserv net start appidsvc net start cryptsvc bitsadmin.exe /reset /allusers 

我尝试了一个扩展版本,添加了msiserver停止/启动以及%systemroot%\SoftwareDistribution的重命名,并且最后停止了wuauserv因为Windows可能会自动重新启动它。

这是代码:

 :rem v2 with ren whole SoftwareDistribution :rem and stop / start msiserver @echo off :: Created by: Shawn Brink :: http://www.sevenforums.com :: Tutorial: http://www.sevenforums.com/tutorials/91738-windows-update-reset.html :rem ---------- bits ---------- :loop1 set b=0 :bits set /ab=%b%+1 if %b% equ 3 ( goto end1 ) net stop bits echo Checking the bits service status. sc query bits | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto bits ) goto loop2 :end1 cls echo. echo Failed to reset Windows Update due to bits service failing to stop. echo. pause goto Start :rem ---------- appidsvc ---------- :loop2 set app=0 :appidsvc set /a app=%app%+1 if %app% equ 3 ( goto end2 ) net stop appidsvc echo Checking the appidsvc service status. sc query appidsvc | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto appidsvc ) goto loop3 :end2 cls echo. echo Failed to reset Windows Update due to appidsvc service failing to stop. echo. pause goto Start :rem ---------- cryptsvc ---------- :loop3 set c=0 :cryptsvc set /ac=%c%+1 if %c% equ 3 ( goto end3 ) net stop cryptsvc echo Checking the cryptsvc service status. sc query cryptsvc | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto cryptsvc ) goto loop4 :end3 cls echo. echo Failed to reset Windows Update due to cryptsvc service failing to stop. echo. pause goto Start :rem ---------- msiserver ---------- :loop4 set w=0 :msiserver set /aw=%w%+1 if %w% equ 3 ( goto end4 ) net stop msiserver echo Checking the msiserver service status. sc query msiserver | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto msiserver ) goto loop5 :end4 cls echo. echo Failed to reset Windows Update due to msiserver service failing to stop. echo. pause goto Start :rem ---------- wuauserv ---------- :loop5 set w=0 :wuauserv set /aw=%w%+1 if %w% equ 3 ( goto end5 ) net stop wuauserv echo Checking the wuauserv service status. sc query wuauserv | findstr /I /C:"STOPPED" if not %errorlevel%==0 ( goto wuauserv ) goto Reset :end5 cls echo. echo Failed to reset Windows Update due to wuauserv service failing to stop. echo. pause goto Start :rem ---------- Reset ---------- :Reset Ipconfig /flushdns Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat" sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) cd /d %windir%\system32 Ren %systemroot%\system32\catroot2 catroot2.bak cd %systemroot%\ ren SoftwareDistribution SoftwareDistribution_mm.bak regsvr32.exe /s atl.dll regsvr32.exe /s urlmon.dll regsvr32.exe /s mshtml.dll regsvr32.exe /s shdocvw.dll regsvr32.exe /s browseui.dll regsvr32.exe /s jscript.dll regsvr32.exe /s vbscript.dll regsvr32.exe /s scrrun.dll regsvr32.exe /s msxml.dll regsvr32.exe /s msxml3.dll regsvr32.exe /s msxml6.dll regsvr32.exe /s actxprxy.dll regsvr32.exe /s softpub.dll regsvr32.exe /s wintrust.dll regsvr32.exe /s dssenh.dll regsvr32.exe /s rsaenh.dll regsvr32.exe /s gpkcsp.dll regsvr32.exe /s sccbase.dll regsvr32.exe /s slbcsp.dll regsvr32.exe /s cryptdlg.dll regsvr32.exe /s oleaut32.dll regsvr32.exe /s ole32.dll regsvr32.exe /s shell32.dll regsvr32.exe /s initpki.dll regsvr32.exe /s wuapi.dll regsvr32.exe /s wuaueng.dll regsvr32.exe /s wuaueng1.dll regsvr32.exe /s wucltui.dll regsvr32.exe /s wups.dll regsvr32.exe /s wups2.dll regsvr32.exe /s wuweb.dll regsvr32.exe /s qmgr.dll regsvr32.exe /s qmgrprxy.dll regsvr32.exe /s wucltux.dll regsvr32.exe /s muweb.dll regsvr32.exe /s wuwebv.dll regsvr32 /s wudriver.dll netsh winsock reset :Start net start bits net start wuauserv net start appidsvc net start cryptsvc net start msiserver bitsadmin.exe /reset /allusers 

毕竟那些让Windows Update再次运行的是cleanmgr