SCCM 2012 SP1-DownloadContentFiles()失败,hr = 0x80041013


15

我们注意到我们的软件更新自动部署规则未能自动从Microsoft下载和应用本月的补丁程序,尽管这些补丁程序已在目录中正确列出。

目录中列出的SCCM软件更新


自动部署规则将其“上次错误代码”列为0X87D20417“最后一个错误描述” ,并将“上次错误描述”列为“自动部署规则下载失败”。手动重新运行规则会重现此错误。删除和重新创建自动部署规则也会重现相同的错误。

查看SMS_RULE_ENGINE日志显示以下错误:

Error   Milestone   004 6/19/2013 3:42:21 PM    SCCM.ad.example.com SMS_RULE_ENGINE 8706     Content download failed.   Message: Failed to download one or more content files.   Source: SMS Rule Engine.   
Error   Milestone   004 6/19/2013 3:42:07 PM    SCCM.ad.example.com SMS_RULE_ENGINE 8706     Content download failed.   Message: Failed to download one or more content files.   Source: SMS Rule Engine.   
Error   Milestone   004 6/19/2013 2:45:44 PM    SCCM.ad.example.com SMS_RULE_ENGINE 8706     Content download failed.   Message: Failed to download one or more content files.   Source: SMS Rule Engine.   
Error   Milestone   004 6/19/2013 2:43:29 PM    SCCM.ad.example.com SMS_RULE_ENGINE 8706     Content download failed.   Message: Failed to download one or more content files.   Source: SMS Rule Engine.   


如果我查看ruleengine.log(大概是从SCCM中生成更高级别的SMS_RULE_ENGINE日志的日志文件),并协调自动部署规则应将这些更新放置在I中的相关部署程序包的程序包ID,找到以下内容:

Contents 16821586 is already present in the package "0040000F". Skipping download.  SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)
Downloading contents (count = 10) for UpdateID 16829711 SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)
List of update content(s) which match the content rule criteria = {16821659,16821660,16821661,16821662,16821663,16821664,16821665,16821666,16821667,16821668}   SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)
Downloading content with ID 16821659 in the package SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)
Failed to download the update from internet. Error = 4115   SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)
Failed to download ContentID 16821659 for UpdateID 16829711. Error code = 4115  SMS_RULE_ENGINE 6/19/2013 3:41:58 PM    9068 (0x236C)


在这一点上,我相信有三个不同的错误都是由同一事件产生的。当然,它们可能不是,这就是为什么它们全部包含在此处的原因。我确实协调了日志文件中的时间,并且有理由相信它们都与自动部署规则的问题有关。

  • 0X87D20417 -从SCCM控制台的自动部署规则
  • 8706 -从SCCM控制台的“监视SMS_RULE_ENGINE”日志中
  • Error code = 4115 -在SCCM站点服务器上,来自[SCCMInstallationPath] \ Logs \ ruleengine.log的日志


看来我们无法下载这些更新。显然,解决此类问题的地方是PatchDownloader.log。而且“那里记录另一个错误:

Trying to connect to the \\SCCM.ad.example.com\root\sms\site_REV namespace on the SCCM.ad.example.com machine.  Software Updates Patch Downloader   6/19/2013 3:42:21 PM    9068 (0x236C)
Connected to \\SCCM.ad.example.com\root\sms\site_REV    Software Updates Patch Downloader   6/19/2013 3:42:21 PM    9068 (0x236C)
GetContentFileInfoForDownload() failed for ContentID 16821994. hRes = 0x80041013 .  Software Updates Patch Downloader   6/19/2013 3:42:21 PM    9068 (0x236C)
ERROR: DownloadContentFiles() failed with hr=0x80041013 Software Updates Patch Downloader   6/19/2013 3:42:21 PM    9068 (0x236C)


我可以将PatchDownloader.log中的Content ID协调回到ruleengine.log中Error: 4115记录的条目,因此,如前所述,我敢肯定,我正在查看同一事件,它会产生所有这些不同的错误,但是如果有人知道的更好,请纠正我。

如果我使用CMTrace的错误查找工具,它将告诉我有关hr =的以下信息0x80041013

Provider load failure

Source: Windows Management (WMI)
-----

可以肯定的是,如果我查看软件更新补丁下载器正在连接的WMI名称空间,它看起来并不正确:

\ SCCM.ad.example.com \ root \ sms \ site_REV

我们的站点代码实际上004和有趣的是,我们组织的前三个字母以REV开头。如果你问我,很巧合。此外,这不是这里的第一个SCCM安装,事实证明以前的SCCM 2007已有现有的边界,集合和程序包迁移到了我们的新安装中。抽烟的枪?不完全的。它也使用了不同的站点代码。也许REV站点代码用于SCCM 2012的临时测试安装?也许不是。机构知识没有关于REV它以及我们被雇用之前进行的迁移的任何记录。

但是,我们来自SCCM 2007实例的旧PatchDownloader.log显示了连接到site_$SITECODEWMI名称空间的软件更新补丁下载器。不幸的是,我没有从五月份开始的当前2012年安装日志,可以确认是否引用了正确的WMI名称空间。

Trying to connect to the root\SMS namespace on the SCCM07.ad.example.com machine.   Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Connected to \\SCCM07.ad.example.com\root\SMS   Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Trying to connect to the \\SCCM07.ad.example.com\root\sms\site_DOR namespace on the  machine.   Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Connected to \\SCCM07.ad.example.com\root\sms\site_DOR  Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Download destination = \\SCCM07.ad.example.com\WSUSContent\be128fa4-0c6b-418a-893d-3450e38c658d.1\windows-kb890830-v3.21.exe .  Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Contentsource = http://download.windowsupdate.com/msdownload/update/software/uprl/2011/07/windows-kb890830-v3.21_2aba440b72071ff17cad1ca2a39f0e40aa85c76e.exe . Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)
Downloading content for ContentID = 31068,  FileName = windows-kb890830-v3.21.exe.  Software Updates Patch Downloader   8/3/2011 3:18:37 PM 25128 (0x6228)


好。WMI名称空间确实看起来确实是一个问题。在SCCM深入的某个地方,有些事情告诉Software Updates Patch Downloader要连接\\SCCM.ad.example.com\root\sms\site_REV而不是\\SCCM.ad.example.com\root\sms\site_004

在WAG上,我检查了SQL数据库中的可能表,以引用REV无济于事。

SELECT * FROM SysResList WHERE SiteCode = 'REV';
SELECT * FROM SiteControl WHERE SiteCode = 'REV';
SELECT * FROM SiteControlNotification WHERE SiteCode = 'REV';
SELECT * FROM Sites WHERE SiteCode = 'REV';
SELECT * FROM Sites_DATA WHERE SiteCode = 'REV';
SELECT * FROM SiteWork WHERE SiteCode = 'REV';
SELECT * FROM PkgServers WHERE sitecode = 'REV';
SELECT * FROM PkgStatus WHERE sitecode = 'REV';


为了使事情更复杂,我看到了对该0x80041013错误的多种解释。

WMI故障排除提示说,加载WMI提供程序失败:

WBEM_E_PROVIDER_LOAD_FAILURE-0x80041013

提供程序事件故障排除类是一个不错的资源,但可能有点不知所措。我发现MSFT_WmiProvider_LoadOperationFailureEvent类非常有用。我遇到的大多数提供程序加载失败是由于组件注册错误(在注册表或WMI中)或与权限相关的结果。

从MSDN WMI错误常数说,这是一个权限问题:

WBEM_E_ACCESS_DENIED 2147749891(0x80041003)当前用户没有执行该操作的权限。

我可以找到的关于该0x80041013错误的唯一其他信息是在TechNet上发布的一个人,他似乎和我有同样的问题,甚至可以归结为他以前安装过SCCM时错误地引用了WMI名称空间的问题(例如,site_REV而不是site_004)。他最终破坏了整个WMI名称空间以及SMS_ProviderLocation的各个部分。我不确定要这么做。


至此,已经漫长的一天了,我们需要修补这些服务器,并且头疼。有什么建议吗?


1
您是否尝试过手动下载/部署更新(跳过ADR)?而且...也许删除并重新创建ADR?
Jason Sypkens

@JasonSypkens-删除ADR并重新创建它们会重现该错误,我真的很想用SCCM修复潜在的问题,而不是手动下载更新-我们还不是那么着急。

在主站点服务器上,WMI名称空间root \ sms \ site_REV是否存在?root \ sms \ site_004是否存在?另外,这可能有点夸张,但是...您是否尝试过删除并重新添加SUP角色和/或重新安装WSUS?我已经查看了我的管理控制台,但没有发现明显的地方可以将SUP配置为错误的站点代码。
Jason Sypkens

Answers:


5

也许该REV站点代码用于SCCM 2012的临时测试安装?也许不是。机构知识没有关于REV它以及我们被雇用之前进行的迁移的任何记录。

这种预感是正确的。我掌握了我的前任,很显然,从SCCM 2007迁移到SCCM 2010的第一次且失败的尝试是使用REV站点代码。它一直以来都在WMI中处于休眠状态,为什么它被“激活”,这对我来说完全是个谜。

我非常仔细地重新阅读了TechNet这篇文章中的解决方案,该文章建议删除旧的名称空间,并决定尝试一下。我有点犹豫地将其标记为答案,即使它确实解决了该问题,也表示我暗中赞成它,尤其是因为我无法让Microsoft的任何“正式”人员来确认这是否是安全的方法或这样做的后果是什么。话虽这么说,在继续之前,请确保您已完整备份了SCCM服务器或至少对WMI有更深入的了解。您可以很轻松地打破一切,特别是如果像我一样,您对WMI以及SCCM利用它的深度不熟悉。


我使用wbemtest连接到root\sms我们的SCCM服务器上的名称空间。从那里,我使用了[Enum_Instances ...]按钮并__NAMESPACE作为超类进行搜索。我删除了REV站点代码条目。然后,我对父SMS_ProviderLocation类执行与Enum_Instances相同的Enum_Instances,并从该命名空间中删除了旧的站点代码。重新运行自动部署规则并查看所PatchDownloader.log显示的,成功下载了每个Windows Update。

WBEMTEST __NAMESPACE

WBEMTEST SMS_ProviderLocation

我将不胜感激,有关SCCM如何使用这些命名空间的更多信息,以及如果有人掌握了更详细的信息,究竟如何解决此问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.