安装软件更新

适用于: 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 映像文件。

优点:默认映像

  • 已知良好的源,可降低图像损坏的风险(可能的问题)
  • 消除对图像的修改,因为可能存在的问题

缺点:默认映像

  • 在部署期间可能会有大量更新
  • 增加每个设备的部署时间
  • 可能不需要自定义,需要其他任务序列步骤才能自定义

流程图

此流程图显示了在任务序列中包含“安装软件更新”步骤时的过程。

以完整大小查看关系图

安装软件更新任务序列步骤的流程图图

  1. 进程在客户端上启动:在客户端上运行的任务序列包括“安装软件更新”步骤。
  2. 编译和评估策略:客户端将所有软件更新策略编译到 WMI RequestedConfigs 命名空间中。 (CIAgent.log)
  3. 此实例是否是第一次调用它?
    1. :转到 完全扫描
    2. 是否为步骤配置了 评估缓存扫描结果中的软件更新的选项?
      1. :转到 “从缓存结果扫描”
      2. :转到 完全扫描
  4. 扫描过程:完全扫描或从缓存结果扫描,同时监视过程。
    1. 完全扫描:任务序列引擎通过更新扫描 API 调用软件更新代理以执行 完全 扫描。 (WUAHandler.log、ScanAgent.log)
      1. SUM 代理扫描 - 完整:正常扫描过程通过 Windows 更新代理 (WUA) ,它与运行 WSUS 的软件更新点通信。 它将任何适用的更新添加到本地更新存储。 (WindowsUpdate.log、UpdateStore.log)
    2. 从缓存结果扫描:任务序列引擎通过更新扫描 API 调用软件更新代理,以扫描缓存的元数据。 (WUAHandler.log、ScanAgent.log)
      1. SUM 代理扫描 - 缓存:Windows 更新代理 (WUA) 检查本地更新存储中已缓存的更新。 (WindowsUpdate.log、UpdateStore.log)
    3. 启动扫描计时器:任务序列引擎启动计时器并等待。 (此过程与完全扫描或从缓存结果进程扫描并行进行。)
      1. 监视:任务序列引擎监视 SUM 代理的状态。
      2. SUM 代理的响应是什么?
        • 正在进行:计时器到达任务序列变量 SMSTSSoftwareUpdateScanTimeout 中的值吗? (默认 1 小时)
          • :此步骤失败。
          • :转到 “监视”
        • 失败:步骤失败。
        • 完成:转到 枚举更新列表
  5. 枚举更新列表:SUM 代理枚举扫描返回的更新列表,确定哪些更新可用或必需。
  6. 扫描结果列表中是否有任何更新?
    • :转到 安装更新
    • :无需安装,步骤成功完成。
  7. 部署过程:安装更新过程与部署监视过程并行进行。
    1. 安装更新:任务序列引擎通过更新部署 API 调用 SUM 代理,以安装所有可用或仅必需的更新。 此行为基于步骤的配置,无论你选择 “安装必需 - 仅限必需软件更新” 还是“ 可用于安装 - 所有软件更新”。 还可以使用 SMSInstallUpdateTarget 变量指定此行为。
      1. SUM 代理安装:使用现有缓存更新列表的正常安装过程,以及标准内容下载。 通过 Windows 更新代理 (WUA) 安装更新。 (UpdatesDeployment.log、UpdatesHandler.log、WuaHandler.log、WindowsUpdate.log)
    2. 启动部署计时器并显示进度:任务序列引擎启动安装计时器,在 TS 进度 UI 中以 10% 的间隔显示子进度,然后等待。
      1. 监视:任务序列引擎轮询 SUM 代理的状态。
      2. SUM 代理的响应是什么?
        • 正在进行安装过程是否已处于非活动状态 8 小时?
          • :此步骤失败。
          • :转到 “监视”
        • 失败:步骤失败。
        • 完成:转到 步骤是否配置了 “评估缓存扫描结果中的软件更新”选项?

超时

该图包含适用于此步骤的两个超时变量。 其他组件中的其他标准计时器可能会影响此过程。

  • 更新扫描超时: (smsts.log) 一小时
  • 位置请求超时: (LocationServices.log 一小时,CAS.log)
  • 内容下载超时: (DTS.log) 一小时
  • 非活动分发点超时: (LocationServices.log 一小时,CAS.log)
  • 总安装非活动超时: (smsts.log) 八小时

疑难解答

使用以下资源和其他信息来帮助排查此步骤中的问题: