安装软件更新
适用于: Configuration Manager(current branch)
“安装软件更新”步骤通常用于 Configuration Manager 任务序列。 安装或更新 OS 时,它会触发软件更新组件以扫描和部署更新。 此步骤可能会给某些客户带来挑战,例如长时间超时延迟或错过更新。 使用本文中的信息来帮助缓解此步骤的常见问题,并在出现问题时更好地进行故障排除。
有关该步骤的详细信息,请参阅 安装软件更新
建议
若要帮助此过程成功,请使用以下建议:
使用脱机服务
使用 Configuration Manager 定期将适用的软件更新安装到映像文件。 然后,这种做法可以减少在任务序列期间需要安装的更新数。
有关详细信息,请参阅 将软件更新应用于映像。
单一索引
许多映像文件包含多个索引,例如不同版本的 Windows。 将图像文件减少到所需的单个索引。 这种做法可减少将软件更新应用到映像的时间量。 它还允许下一个建议来减小图像大小。
将 OS 映像添加到站点时自动执行此过程。 有关详细信息,请参阅 添加 OS 映像。
减小图像大小
将软件更新应用于映像时,请通过删除任何被取代的更新来优化输出。 使用 DISM 命令行工具,例如:
dism /Mount-Image /ImageFile:C:\Data\install.wim /MountDir:C:\Mountdir
dism /Image:C:\Mountdir /Cleanup-Image /StartComponentCleanup /ResetBase
dism /Unmount-Image /MountDir:C:\Mountdir /Commit
可以选择自动执行此过程。 有关详细信息,请参阅 优化映像服务。
图像工程决策
设计映像过程时,有几个选项可能会影响软件更新的安装:
定期重新捕获图像
你有一个自动过程来定期捕获自定义 OS 映像。 此捕获任务序列安装最新的软件更新。 这些更新可能包括累积更新、非累积更新和其他关键更新,例如服务堆栈更新 (SSU) 。 部署任务序列在捕获后安装任何其他更新。
有关此过程的详细信息,请参阅 创建用于捕获 OS 的任务序列。
优点:重新捕获图像
- 每个客户端在部署时应用的更新更少,从而节省部署期间的时间和带宽
- 更少的更新,担心导致重启
- 组织的自定义映像
- 部署时变量更少
缺点:重新捕获图像
- 创建和捕获映像的时间,即使它主要是自动化的
- 延长了将映像分发到分发点的时间,这可被视为活动部署的中断
- 通过预生产环境进行测试的时间可能比 OS 修补程序周期更长,这可能会使更新后的映像变得无关
使用脱机服务
计划 Configuration Manager 以将软件更新应用于映像。
有关详细信息,请参阅 将软件更新应用于映像。
优点:脱机服务
- 每个客户端在部署时应用的更新更少,从而节省部署期间的时间和带宽
- 更少的更新,担心导致重启
- 可以在站点上计划维护过程
缺点:脱机服务
- 手动选择更新
- 延长了将映像分发到分发点的时间
- 仅支持基于 CBS 的更新。 它无法应用Microsoft 365 应用更新
提示
可以使用 PowerShell 自动选择软件更新。 使用 Get-CMSoftwareUpdate cmdlet 获取更新列表。 然后使用 New-CMOperatingSystemImageUpdateSchedule cmdlet 创建脱机服务计划。 以下示例演示了一种自动执行此操作的方法:
# Get the OS image
$Win10Image = Get-CMOperatingSystemImage -Name "Windows 10 Enterprise"
# Get the latest cumulative update for Windows 10 1809
$OSBuild = "1809"
$LatestUpdate = Get-CMSoftwareUpdate -Fast | Where {$_.LocalizedDisplayName -Like "*Cumulative Update for Windows 10 Version $OSBuild for x64*" -and $_.LocalizedDisplayName -notlike "*Dynamic*"} | Sort-Object ArticleID -Descending | Select -First 1
Write-Host "Latest update for Windows 10 build" $OSBuild "is" $LatestUpdate.LocalizedDisplayName
# Create a new update schedule to apply the latest update
New-CMOperatingSystemImageUpdateSchedule -Name $Win10Image.Name -SoftwareUpdate $LatestUpdate -RunNow -ContinueOnError $True
仅使用默认映像
在部署任务序列中使用默认的 Windows install.wim 映像文件。
优点:默认映像
- 已知良好的源,可降低图像损坏的风险(可能的问题)
- 消除对图像的修改,因为可能存在的问题
缺点:默认映像
- 在部署期间可能会有大量更新
- 增加每个设备的部署时间
- 可能不需要自定义,需要其他任务序列步骤才能自定义
流程图
此流程图显示了在任务序列中包含“安装软件更新”步骤时的过程。
- 进程在客户端上启动:在客户端上运行的任务序列包括“安装软件更新”步骤。
- 编译和评估策略:客户端将所有软件更新策略编译到 WMI RequestedConfigs 命名空间中。 (CIAgent.log)
-
此实例是否是第一次调用它?
- 是:转到 完全扫描
-
否: 是否为步骤配置了 评估缓存扫描结果中的软件更新的选项?
- 是:转到 “从缓存结果扫描”
- 否:转到 完全扫描
- 扫描过程:完全扫描或从缓存结果扫描,同时监视过程。
-
完全扫描:任务序列引擎通过更新扫描 API 调用软件更新代理以执行 完全 扫描。 (WUAHandler.log、ScanAgent.log)
- SUM 代理扫描 - 完整:正常扫描过程通过 Windows 更新代理 (WUA) ,它与运行 WSUS 的软件更新点通信。 它将任何适用的更新添加到本地更新存储。 (WindowsUpdate.log、UpdateStore.log)
-
从缓存结果扫描:任务序列引擎通过更新扫描 API 调用软件更新代理,以扫描缓存的元数据。 (WUAHandler.log、ScanAgent.log)
- SUM 代理扫描 - 缓存:Windows 更新代理 (WUA) 检查本地更新存储中已缓存的更新。 (WindowsUpdate.log、UpdateStore.log)
-
启动扫描计时器:任务序列引擎启动计时器并等待。 (此过程与完全扫描或从缓存结果进程扫描并行进行。)
- 监视:任务序列引擎监视 SUM 代理的状态。
-
SUM 代理的响应是什么?
-
正在进行:计时器到达任务序列变量 SMSTSSoftwareUpdateScanTimeout 中的值吗? (默认 1 小时)
- 是:此步骤失败。
- 否:转到 “监视”
- 失败:步骤失败。
- 完成:转到 枚举更新列表
-
正在进行:计时器到达任务序列变量 SMSTSSoftwareUpdateScanTimeout 中的值吗? (默认 1 小时)
-
完全扫描:任务序列引擎通过更新扫描 API 调用软件更新代理以执行 完全 扫描。 (WUAHandler.log、ScanAgent.log)
- 枚举更新列表:SUM 代理枚举扫描返回的更新列表,确定哪些更新可用或必需。
-
扫描结果列表中是否有任何更新?
- 是:转到 安装更新
- 否:无需安装,步骤成功完成。
- 部署过程:安装更新过程与部署监视过程并行进行。
-
安装更新:任务序列引擎通过更新部署 API 调用 SUM 代理,以安装所有可用或仅必需的更新。 此行为基于步骤的配置,无论你选择 “安装必需 - 仅限必需软件更新” 还是“ 可用于安装 - 所有软件更新”。 还可以使用 SMSInstallUpdateTarget 变量指定此行为。
- SUM 代理安装:使用现有缓存更新列表的正常安装过程,以及标准内容下载。 通过 Windows 更新代理 (WUA) 安装更新。 (UpdatesDeployment.log、UpdatesHandler.log、WuaHandler.log、WindowsUpdate.log)
-
启动部署计时器并显示进度:任务序列引擎启动安装计时器,在 TS 进度 UI 中以 10% 的间隔显示子进度,然后等待。
- 监视:任务序列引擎轮询 SUM 代理的状态。
-
SUM 代理的响应是什么?
-
正在进行: 安装过程是否已处于非活动状态 8 小时?
- 是:此步骤失败。
- 否:转到 “监视”
- 失败:步骤失败。
- 完成:转到 步骤是否配置了 “评估缓存扫描结果中的软件更新”选项?
-
正在进行: 安装过程是否已处于非活动状态 8 小时?
-
安装更新:任务序列引擎通过更新部署 API 调用 SUM 代理,以安装所有可用或仅必需的更新。 此行为基于步骤的配置,无论你选择 “安装必需 - 仅限必需软件更新” 还是“ 可用于安装 - 所有软件更新”。 还可以使用 SMSInstallUpdateTarget 变量指定此行为。
超时
该图包含适用于此步骤的两个超时变量。 其他组件中的其他标准计时器可能会影响此过程。
- 更新扫描超时: (smsts.log) 一小时
- 位置请求超时: (LocationServices.log 一小时,CAS.log)
- 内容下载超时: (DTS.log) 一小时
- 非活动分发点超时: (LocationServices.log 一小时,CAS.log)
- 总安装非活动超时: (smsts.log) 八小时
疑难解答
使用以下资源和其他信息来帮助排查此步骤中的问题:
确保将软件更新部署定位到任务序列部署所在的同一集合。
请确保在边界组中包括软件更新点。 有关详细信息,请参阅 Configuration Manager 客户端未获取软件更新。
若要帮助排查软件更新管理过程的问题,请参阅 排查 Configuration Manager 中的软件更新管理问题。
为了帮助提高整体性能,请减小软件更新目录的大小。 例如:
删除不必要的分类、产品和语言。 有关详细信息,请参阅 配置要同步的分类和产品。
重新编制站点数据库索引并重新生成统计信息。 有关详细信息,请参阅 网站大小和性能常见问题解答。
拒绝不必要的更新,例如:
取代。
注意
Configuration Manager 为你执行此操作。 有关详细信息,请参阅 WSUS 清理行为。
Itanium
Beta
下一个版本
ARM
未部署的 Windows 版本