简介:《5-SCCM软件分发》是一份面向IT运维与系统管理人员的SCCM实操指南,围绕如何使用System Center Configuration Manager完成企业内软件分发的全流程展开。资源以纯文档形式呈现,包内共1个docx文件,大小约1.37MB,便于直接阅读与打印,目前已有271人学习使用。内容从SCCM系统健康状态检查开始,依次覆盖客户端代理通知设置、创建数据包与程序、配置分发点、新建播发策略,直到在客户机上验证安装结果,步骤化阐述清晰,适合运维人员对照操作。文档还对关键细节做了提醒,如勾选“显示一条通知消息”并设置5分钟倒计时,让用户在手动安装与自动安装之间保持平衡;同时说明从分发点下载内容再本地运行的优势,帮助读者避免安装中断等问题。整体而言,这份指南能为SCCM软件分发提供一套可复用的实施思路和排错参考。
1. 用 SCCM 做软件分发:把安装包从服务器送到每台电脑
SCCM 软件分发是典型“前面一步偷懒、后面全线翻车”的活。这套来自某企业运维团队的实战流程,能直接拿走照着做,不用自己再从零摸索。它解决的核心问题很实在:给全公司上百台电脑装软件,不用一台台跑,不用给用户管理员权限,还能用“倒计时通知”给用户留出自主安装的窗口——用户不点,5分钟后就自动装。整个流程从服务器状态检查、客户端代理开启、创建数据包、设置程序、配置分发点,到新建播发策略并验证,是完整的六步链路。适合刚接手 SCCM 的新人照着做一遍,也适合做了一两年但没系统梳理过播发配置的人对照查漏。
2. 开工前先看两处状态:服务器健康检查和客户端代理开关
SCCM 软件分发不是你把包往服务器一扔就能自动飞过去。整个链路里最先要确认的是“地基稳不稳”——服务器角色状态和客户端代理状态,这两个不检查,后面整个流程你能白做一遍。
2.1 服务器状态:哪些组件需要重点看
打开 SCCM 控制台,先不要急着建包。先去“监视”节点下看“系统状态”和“组件状态”。重点排查三类:
- 站点服务器的关键组件状态,比如 SMS_EXECUTIVE、SMS_SITE_COMPONENT_MANAGER,这两个异常会直接影响分发任务往下走;
- 站点数据库的复制是否正常;
- 管理点(MP)和分发点(DP)角色是否有红色告警。
我一般会顺手把“组件状态”里最近的错误按时间排个序,重点看持续时间超过 30 分钟的错误。临时性的错误有时会自己恢复,但长期报错会直接导致客户端策略拉取失败,你的播发建了也是白发。
提示:如果组件状态有持续告警,先修服务器,再往下走。带着“带病运行”的 SCCM 做分发测试,最终你会分不清问题是出在软件包还是出在服务器上。
2.2 客户端代理:通知标签和倒计时是怎么工作的
客户端代理配置在“管理”->“客户端设置”的默认设置里。双击打开,找到“计算机代理”这一节,勾选“显示一条通知消息”。这个开关决定了播发策略被客户端拉取后,桌面右下角是否会弹出气泡通知。
关键参数是那个“倒计时 5 分钟”的设定。它的实际行为是:
- 播发策略到达客户端后,右下角弹通知;
- 5 分钟内,用户如果主动点击“安装”,按用户的手动流程走;
- 5 分钟倒计时结束用户没动,客户端自动启动安装程序。
这个倒计时时长不是死的。在配置“播发”和“客户端设置”时都有相关的倒计时字段(比如“显示通知消息的时间(分钟)”),可以按业务需求调成 15 分钟甚至 60 分钟。我一般给业务办公室留 15 分钟,给研发工位留 5 分钟——研发经常一坐下写代码就沉浸了,5 分钟根本不够。
2.3 客户端侧自检:先确认本机能接收软件更新
服务器端配完了,客户端也得符合条件。去目标电脑的“控制面板”->“Configuration Manager”属性页里,点“操作”页签,先触发一次“计算机策略检索与评估周期”,把策略拉下来。然后注意看“组件”页签里 Software Distribution 组件是否为已启用状态。
如果 Software Distribution 组件灰着,说明客户端代理安装时没勾选软件分发组件,或者客户端被组策略禁用了。这种问题不用重装客户端,去客户端代理的属性里打开对应开关,再等一轮策略刷新即可。
3. 把安装包变成标准“货物”:数据包(Package)的创建
数据包就是软件分发的“货箱”。你要发的软件源文件、安装命令、分发时要用的各种属性,全得先压缩成一个标准的包结构,否则分发点不认识你要发的到底是什么。
3.1 共享源文件夹:分发前的文件准备
先到服务器上,找一个盘符空间充足的目录(建议至少预留要分发软件体积三倍的空间——一份给源文件、一份给包源、一份给分发点内容库)。把你要分发的软件安装文件整个拷进去,然后设置共享。
我这里用某企业办公软件为例,说明创建流程。共享名建议用纯英文且不含空格——虽然中文共享名系统也能建,但后续在分发点拉源文件时偶尔会出现路径解析异常,纯英文名可以避开这个问题。
3.2 新建数据包:关键选项和源文件夹
进入 SCCM 控制台,在“软件库”->“应用程序管理”->“包”节点右键,选择“创建包”。
这里说下关键选项的走法:
- 指定包的类型:选“软件包”,不要选“应用程序”——应用程序走的是另一种部署模型,逻辑和本文讲的播发流程不同;
- 指定包含源文件的包:勾选“此包包含源文件”,然后浏览到你刚才共享的那个文件夹;
- 源文件夹版本:保持默认“始终从源文件夹获取文件”,这样每次内容更新,分发点都能拿到最新文件。
剩下能看到的“名称”和“版本”,建议命名带上软件名和日期,比如IM_Client_20240801。项目里用“QQ数据包”来代指这种命名习惯,实际工作中你可以按自己公司的命名标准来。
权限页面上,如果默认设置的权限足够,直接下一步。需要限定某些部门不能接收此软件包时,才需要在此调整安全范围。
提示:数据包创建完成后,你会看到包状态是“尚未创建分发点内容”。别急着建播发,先往下面的分发点章节走。
3.3 数据包属性:安装程序与静默参数的来源
建完包之后,双击包打开属性,看看“数据源”标签里的“此包中的源文件夹”是否指到了正确路径,并在“运行方式”标签里确认是“使用登录用户的权限”还是“使用管理账户的权限”。
这一步很多人会忽略。如果你的软件安装时需要管理员权限(比如要往 Program Files 写文件、要写注册表),而客户端用户是普通域用户,安装会直接失败。此时应在“运行方式”里选择“使用管理账户的权限”——这要求你先在 SCCM 里配置一个软件分发用的域管理账户。
命令行的位置则在“程序”里设置——接下来创建程序时,这里就是核心参数位。
4. 给货箱写“安装说明书”:创建程序和分发点的正确顺序
包建好了,不代表安装就能跑起来。SCCM 还需要一个“程序”(Program)告诉客户端“这个包应该执行什么命令、在什么环境条件下能装”;再告诉服务器“这份货应该放在哪里供客户端取货”——这就是分发点(Distribution Point)。
4.1 新建程序:命令行与运行条件的设定
在包下面展开“程序”节点,右键选择“新建程序”。关键的配置项:
- “常规”标签:名称建议和包名保持一致的风格,比如“Install IM Client”;命令行输入软件的静默安装参数,例如
setup.exe /S /v"/qn"。命令行必须严格符合软件的静默参数规则,写错了客户端装了等于白装; - “环境”标签:运行模式选“仅当用户登录时”还是“是否允许用户查看程序运行”——按实际需要来选。要求用户在可视化界面里看到安装过程时,选“仅当用户登录时”;需要在用户未登录状态下也能安装时,选“无论用户是否登录”;
- “环境”标签下方的“操作系统版本”勾选:指定这个程序允许运行在哪些系统上。你分发的是内部工具,就勾选公司现有的系统类型;如果排除了某些系统类型,安装包就不会在那些平台上执行。
描述里我建议写清楚这个程序的用途和安装时长预估,后续排错时一眼就能认出这个程序是干嘛用的。
4.2 分发点:只有一个站点时的选择逻辑
程序建完后,回到包节点,展开“分发点”子节点,右键“新建分发点”。如果环境里只有一个站点同时承担了分发点角色,这一步没有悬念——直接勾选唯一的那个分发点。
这里有个细节值得展开:很多刚接触 SCCM 的人以为“分发点”就是把安装包整个拷到服务器某个文件夹里等客户端来下载。实际上的机制是:
- 包内容被复制到分发点的内容库(Content Library)中;
- 分发点目录里的文件被分成若干“内容”单元,按数据的哈希值索引存放;
- 客户端通过与分发点之间的通信协议来请求内容块,而不是简单地从网络共享里拉整个文件夹。
所以,分发点既承载软件内容,又承担客户端请求分发的应答。多分发点时建议选离客户端网络最近的(同一网段优先),能显著降低跨出口流量。
4.3 分发内容的验证窗口
创建完分发点后,回到包节点,右键“分发内容”。这是把包内容主动推到分发点上。推送完成后,看包的属性里的“内容状态”,确认“已安装”才说明客户端能取到货。
注意:如果内容状态一直是“正在安装”或“失败”,多半是分发点服务器没配置好站点系统角色,或者网络边界上服务器访问不到分发点。此时重试一次还不够的话,重启分发点上的 SMS_DISTRIBUTION_MANAGER 组件,基本能恢复。
5. 播发与客户机验证:从策略下达到落地安装的完整链路
前面几步把“货”和“安装说明”准备好了,接下来才是把安装任务真正下发到目标电脑的环节。这一步叫“播发”(Advertisement),相当于把“安装任务”结合“交货时间”推到客户端策略里。去掉这步,前面的包和程序只是躺在服务器上的静态数据。
5.1 新建播发:目标集合、计划和强制分配的关键参数
在“软件库”->“应用程序管理”->“播发”节点,右键“新建播发”。
几个关键参数的走位:
- General 页签:包选你刚建的那个包,程序选对应的程序;集合选择目标设备集合。如果你想发给所有 XP 系统的电脑,先要在“设备集合”里建一个“所有 XP 系统”的查询集合,查询语句类似
select * from SMS_R_System where OperatingSystemName0 like "%Windows XP%"。若直接选内置的“所有系统”集合,等于把软件推给了服务器和没有软件需求的设备,容易引发大规模误装的运维事故; - 计划页签:设定“开始时间”,该时间表示策略在所有成员的客户端生效的起点。软安装和强制安装的选择在这里完成——选“强制分配”时,如果用户在倒计时结束前没有任何反应,客户端会自动启动安装,不需要用户干预执行;不勾选强制时,用户体验是这个软件在他们的软件中心里“可选”,装不装由用户点击决定;
- 分发点页签:重点选择“从分发点下载内容并在本地运行”。这个选项的含义是:客户端先把安装文件从分发点拉取到客户端本地缓存目录,然后在本地启动安装进程。这对大型软件(几百 MB 的安装包)很友好——避免了从分发点直接安装时,安装到一半网络波动的断线问题。另一种“从分发点运行程序”的方式是边下边跑,适合体积极小且网络极稳的绿色软件。
5.2 自定义倒计时通知的两种设定方式
播发里还有一个“使用自定义倒计时通知时间”复选框。勾上后,可以忽略客户端代理设置里那个 5 分钟的默认倒计时,按本次播发的特殊情况重新指定,比如指定 30 分钟。这为不同播发任务提供了不同的管控力度。
我的经验是:同一批用户、同一类软件,倒计时设置要统一,否则用户会向 IT 投诉“为什么上次是 5 分钟才自动装的,这次我还没点就装了”。这种体验不一致带来的工单,比你省下的那几分钟要多得多。
5.3 客户机状态验证:看图标、看日志、看结果
播发创建完成后,去客户端设备上触发一次“计算机策略检索与评估周期”,然后观察右下角的通知气泡。
验证清单如下:
- 通知气泡是否出现;如果出现,等待倒计时结束后是否自动启动了安装;
- 如果用户手动点击了通知,安装程序是否立即执行;
- 安装完成后,“软件中心”里的已安装列表中是否能查到这个软件;
- 如果播发设置为强制分配,安装过程是否需要用户按 UAC 或者输入凭据——需要的话,说明程序“运行方式”那里没配成管理账户权限。
客户端日志我重点关注两个:
CAS.log:客户端如何从管理点拉取策略和内容位置的记录;Execmgr.log:客户端进程执行软件安装程序(即程序命令行)的实时日志;
执行这条分发任务时,用C:\Windows\CCM\Logs\Execmgr.log这条路径直接进行排查即可。安装失败的多数情况都能在这个文件里找到具体报错和退出返回码。
5.4 避开率较高的三个播发坑
现象:播发计划到了,客户端右下角不弹通知,软件中心里也看不到任务。
原因:客户端代理里“显示一条通知消息”没有勾选,或者播发集合里根本不包括该电脑。
解决:返回第二步检查“计算机代理”设置;再看播发集合“查看成员”里是否能查到这台电脑——查不到说明查询条件写错了。现象:客户端点击通知开始安装,安装程序启动了几秒就退出,然后 Execmgr.log 里显示返回码 1603。
原因:安装包本身不支持当前系统的静默模式,或安装介质里缺少必要组件(比如需要先装 VC++ 运行库)。
解决:先在一台测试机上用手动命令跑一遍同样的静默参数,确认是否能成功;如果是介质问题,重新打一个包含前置依赖的集成安装包,再分发一次。现象:强制分配被勾选,但用户看完通知不点,倒了 5 分钟客户端也没自动安装。
原因:播发“计划”页签里忘了勾选“强制分配”对应的生效时间选项;有时你只在“计划”设置了开始时间,却忽略了“截止期限”也是一个触发点。
解决:把“截止期限”和“开始时间”都设置成一致的(或稍晚),在播发属性中同时勾选“强制分配”,然后让客户端重新拉取策略。
6. 播发后容易被忽略的三个细化技巧
新建播发并验证通过后,这套流程算是跑通了。但还有几个不写在标准教程里的细节,直接影响后续的运维效率和数据准确性。
第一个技巧是区分“播发”与“应用程序”两种部署模式。每次做分发前先想好走哪条路。播发模型适合直接执行安装命令、对安装过程敏感、要求精确控制命令行的场景;应用程序模型则适合软件中心用户体验、多部署类型条件下按需安装、需要卸载管理的场景。本文的项目流程用的是播发模式,但如果你在实践中有用户自助安装的需求,可以额外学习应用程序模型——两者并不互斥,同一软件可以同时以包和应用程序两种形态存在。
第二个技巧是控制安装程序与配置基线的先后顺序。SCCM 的环境里往往还有配置基线任务。建议把播发开始时间设置成比基线评估晚 15 分钟,留出安装的缓冲窗口——否则可能出现基线评估正检测软件是否已安装,而安装程序还没跑完,造成基线误报“不符合”。
第三个技巧是记得清理旧版本内容。源文件夹里的安装文件更新后,包内容会在分发点留下旧的内容版本。日常运维里可在包属性中勾选“使旧版本过期”,并在分发点清理基期中把过期内容标记为删除。否则分发点磁盘会被几十个历史版本拖垮。从那以后我每次分发完新版本,都会强制走一遍“更新源文件夹版本 -> 使旧版本过期 -> 确认分发点内容库释放空间”的循环,习惯就养成了。希望这篇流程能帮你把 SCCM 软件分发这条链路一次跑通。
本文还有配套的精品资源,点击获取