Configuration Manager 2007 客户端内容下载故障排除指导

英文原文链接:https://blogs.technet.com/configmgrteam/archive/2010/01/14/troubleshooting-client-content-download-in-configuration-manager-2007.aspx

 

Configuration Manager 2007的软件分布从创建包开始到客户端内容安装完结束。但是客户端经常在内容下载的过程中遇到很多问题。以下是从TechNet论坛上找到的一些例子:

https://social.technet.microsoft.com/Forums/en-US/configmgrswdist/thread/b26d330c-2074-44ed-aa2b-c9040c853ed7

https://social.technet.microsoft.com/Forums/en-US/configmgrswdist/thread/c2d7d528-5105-453b-9532-09264ea52d90?prof=required

这篇博文提供了有关客户端内容下载经常遇到的问题的解决方法。先简单概述下整体情况,然后指导如何跟踪所涉及的各个过程,包括从客户端下载软件政策一直到安装软件。

步骤 1: 跟踪客户端上的播发(Advertisement)

步骤 2: 跟踪客户端上内容的位置请求

步骤 3: 跟踪管理点(Management Point)上内容的位置响应

第四步: 确定客户端边界及其对内容定位与下载的影响

步骤 5: 跟踪内容下载

步骤 6: 排除后台智能传输服务(BITS)故障

在这里假定包已成功发布到标准分布点(Standard Distribution Point),包的一个播发(Advertisement)被指向到一个群集。为排除故障,在客户端和管理点上都启用了调试日志记录(Debug Logging)。有关如何配置调试日志记录的说明,请参阅 https://support.microsoft.com/kb/833417。

当客户端政策被触发时,目标群集中的客户端即可获取播发(Advertisement)。如果你需要配置客户端策略的说明,请参阅 如何配置管理器客户端的启动政策。

更多有关记录文件的信息,包括它们的位置,请参阅 Configuration Manager 2007 中的记录文件列表。

第一步 :跟踪客户端上的播发

从客户端上的记录文件execmgr.log开始,寻找播发(Advertisement)的ID。在记录文档中应该可以看到播发ID的参考值,类似下面所示:

<SoftwareDeploymentMessage MessageType='Execution'>

<AdvertisementID>CAR20000</AdvertisementID>

<PackageID>CAR00003</PackageID>

    ……

</SoftwareDeploymentMessage>'

第二步 :跟踪客户端上内容位置请求

确定客户端收到播发(Advertisement)之后,打开客户端上的记录文档LocationServices.log。如果播发请求内容下载,客户端会向管理点(Management point)询问可用的内容的链接地址。记录文档LocationServices.log记录了客户端发送的内容位置请求信息。通过在execmgr.log文件中引用的PackgeID的值可以找到它。类似下面所示:

ContentLocationRequest : <ContentLocationRequest SchemaVersion="1.00"> <Package ID="CAR00003" Version="1"/> ….. </ContentLocationRequest>

 

第三步 :跟踪管理点(Management Point)上的内容位置响应

收到内容位置请求之后,管理点会返回包含位置内容的URL列表。你可以使用管理点上的记录文件MP_Location.log来跟踪请求(内容位置请求xml段(ContentLocationRequest xml segment))和响应(内容位置回复xml段(ContentLocationReply xml segment))。

管理点返回的有效的URL列表供客户端用来下载内容,这个列表类似下面:

MP LM: Message Body :

<ContentLocationRequest SchemaVersion="1.00" ExcludeFileList=""><Package ID="CAR00003" Version="1"/>

<AssignedSite SiteCode="PS2"/>

<ClientLocationInfo LocationType="SMSPackage" UseProtected="0" AllowCaching="0" BranchDPFlags="0" UseInternetDP="0" AllowHTTP="1" AllowSMB="1" AllowMulticast="1" AllowFileStreaming="0">

……

<LocationRecords><LocationRecord>

<SMBPath Name=" \\[ServerName]\SMSPKGC$\CAR00003"/>

<URL Name="https://[ServerName/SMS_DP_SMSPKGC$/CAR00003" Signature="https://[ServerName]/SMS_DP_SMSSIG$/CAR00003.1.tar"/>

……

如果管理点(Management Point)没有位置给客户端用于内容的下载,结果将类似如下所示:

No Locations found. MP_LocationManager 10/14/2009 10:52:08 AM 4768 (0x12A0)

 

如果你看到“No Locations found”出现在MP_Location.log中,请确定包已经通过页面服务器(Site Server)上的记录文件distmgr.log成功安装在了分布点(Distribution Points)上。

第四步 : 确定客户端边界及其对内容定位与下载的影响

在MP_Location.log的例子中,管理点(Management Point)返回一串有效的URL列表给客户端用于内容下载,文件中的SiteLocality=”Local”把客户端认为是在页面的快速边界(Fast Boundary)之中的,所以客户端的位置被认为是“本地的(local)”。页面位置(SiteLocality)的其它两个属性分别是Remote和Fallback。

Remote 认为客户端是在慢速不可靠的边界(Slow and Unreliable Boundary)中

Fallback 认为客户端不属于任何边界

如果客户端是在一个慢速不可靠的页面边界中,内容位置回复信息类似如下:

ContentLocationReply : <ContentLocationReply SchemaVersion="1.00"> <ContentInfo PackageFlags="0"/><Sites><Site> <MPSite SiteCode="PS1" MasterSiteCode="PS1" SiteLocality="REMOTE"/ > …… </ContentLocationReply>

 

如果想在慢速不可靠边界中的客户端上安装软件,确保播发(Advertisement)的配置中下面的选项是启用的:“Download content from distribution point and run locally”。当客户端是在慢速不可靠的边界中时,播发的默认设置是“Do not run program”。

注意:慢速不可靠边界中的客户端不能安装软件可能也存在有效的原因。这个设定应用于所有在慢速不可靠的边界中的客户端而不能应用于单独的客户端。如果你想改变设置,可能会潜在地影响到很多客户端。更多的信息,请看在慢速不可靠的网络边界中的客户端是否应该下载内容。

当SiteLocality="FALLBACK",得到的作用和处于慢速不可靠边界的客户端一样。这种情况下内容位置的返回类似如下:

ContentLocationReply : <ContentLocationReply SchemaVersion="1.00"> <ContentInfo PackageFlags="0"/> <Sites><Site> <MPSite SiteCode="PS1" MasterSiteCode="PS1" SiteLocality="FALLBACK"/ > …… </ContentLocationReply>

 

第五步 : 跟踪内容下载

客户端尝试从返回的内容位置列表中的第一个分布点(Distribution Point)下载内容,这个过程将在客户端上记录在ContentTransferManager.log文件中,如下面的例子所示:

CTM dumping locations returned by Location Service: ContentTransferManager 10/8/2009 2:42:56 PM 3204 (0x0C84)

Source: 'https://[ServerName]/SMS_DP_SMSPKGC$/CAR00003' Locality: Local Version: 6221 Capability: <Capabilities SchemaVersion="1.0"/>Signatures: https://[ServerName]/SMS_DP_SMSSIG$/CAR0000.1.tar' ContentTransferManager 10/8/2009 2:42:56 PM 3204 (0x0C84)

Source: '\\[ServerName]\SMSPKGC$\CAR00003' Locality: Local Version: 6221 Capability: <Capabilities SchemaVersion="1.0"/>Signatures: '' ContentTransferManager 10/8/2009 2:42:56 PM 3204 (0x0C84)

 

然后在客户端上通过查看文件 DataTransferService.log 看是否有创建下载文件到客户端的工作。记录的入口(log entry)如下所示:

DTSJob {BC1A0EAB-A1D7-48BE-AD1E-CFE85F63C1B0} created to download from 'https://NOVA42306.NOVA42304DOM.net/SMS_DP_SMSPKGC$/CAR00003' to 'C:\Windows\system32\CCM\Cache\CAR00003.1.System'. DataTransferService 10/8/2009 2:42:56 PM 3204 (0x0C84)

 

连续的记录入口类似如下:

Execute called for DTS job '{BC1A0EAB-A1D7-48BE-AD1E-CFE85F63C1B0}'. Current state: 'PendingDownload'. DataTransferService 10/8/2009 2:43:07 PM 3788 (0x0ECC)

...

Starting BITS download for DTS job '{BC1A0EAB-A1D7-48BE-AD1E-CFE85F63C1B0}'. DataTransferService 10/8/2009 2:43:07 PM 3788 (0x0ECC)

 

上面的最后一行说明内容是从启用BITS的分布点下载的(配置管理器SCCM的分布点属性Allow clients to transfer content from this distribution point using BITS, HTTP, and HTTPS为:General tab)。注意如果BITS的下载失败,内容下载将会退回使用SMB,并且文件的下载将会通过FileBITS.log文件来记录监视。

第六步 : 解决BITS的问题

如果内容是使用BITS来下载,下载的进度在多种情况下都可能停滞,bitsadmin是一个非常实用的用于排除内容下载状态故障的工具。例如:

bitsadmin/list/allusers

使用这条命令来寻找与故障排除任务相关的工作ID,在其他的bitsadmin命令中,你会需要这些信息。这条命令列出了所有正在进行中的BITS下载工作,从列表中找到和你的包ID相关的工作,记录这些工作ID。

bitsadmin/getinfo jobid

使用这条命令获得更多的关于指定工作的信息。从输出结果中,如果你注意到下载过程在任何一个特定的文件或路径处停止,使用下面的命令来手动下载文件看下是否可行: bitsadmin /transfer MyJob /download /priority normal [https://remote-file-url] [SysDrive]\LocalFileName

在某个文件或路径处下载停止是很典型的情况,下面列举一些常见的问题和解决方法:

一些文件的扩展名原本就被IIS阻止。检查包里是否有文件包含这些扩展名,使用下面KB的文章把applicationHost.config文件中的被阻止的扩展名去掉。https://support.microsoft.com/kb/942045/

一些路径被IIS默认设置为隐藏。包里出现的一些典型的路径如"bin"和"log"文件夹。这些路径被IIS隐藏,BITS就无法下载宿主在这些路径下的文件。按下面KB的文章从applicationHost.config中去除这些限制:https://support.microsoft.com/kb/942047/。更多信息请:https://blogs.iis.net/bills/archive/2008/03/23/how-to-un-block-directories-with-iis7-web-config.aspx

一些文件或路径包含一些特殊符号,如"+"有双转义序列,被IIS默认为拒绝的。按下面KB的文章设定applicationHost.config文件中的allowDoubleEscaping为true。 https://support.microsoft.com/kb/942076/

发表你的评论,如果想知道更多类似的故障排除的文章,请给我留言,我会尽快回复。

 

-- Bhaskar Krishnan

--译: 鲍瑞敏