自动部署软件更新

适用范围:Configuration Manager (Current Branch)

使用自动部署规则 (ADR),而不用向现有软件更新组添加新的更新。 通常情况下,可使用 ADR 来部署每月软件更新(也称为“周二补丁日”更新)和管理 Endpoint Protection 定义更新。 如果需要帮助以确定适合的部署方式,请参阅部署软件更新

创建自动部署规则 (ADR)

使用 ADR 自动审批和部署软件更新。 该规则可在每次规则运行时将软件更新添加到新的软件更新组,也可将软件更新添加到现有组。 规则运行并将软件更新添加到现有组时,该规则将删除组中的所有更新。 然后,它会向组添加符合所定义条件的更新。

警告

在首次创建 ADR 之前,请验证站点是否已完成软件更新同步。 使用非英语语言运行 Configuration Manager 时,这一步非常重要。 在首次同步前,软件更新分类以英文显示,而在软件更新同步完成之后,则以本地化语言显示。 同步后,同步软件更新之前所创建的规则可能无法正常工作,因为文本字符串可能不匹配。

ADR 的创建过程

  1. 在 Configuration Manager 控制台中,转到“软件库”工作区,展开“软件更新”,然后选择“自动部署规则”节点 。

  2. 在功能区中,单击“创建自动部署规则”。

  3. 在“创建自动部署规则”向导的“常规”页面上,配置以下设置:

    • 名称:指定 ADR 的名称。 名称必须唯一、有助于描述规则的目的,并且与 Configuration Manager 站点中的其他名称区分开来。

    • 描述:指定 ADR 的描述。 说明应概述部署规则和其他相关信息,以便将该规则与其他规则区分开来。 描述字段是可选字段,最多不超过 256 个字符,默认情况下具有空白值。

    • 模板:选择部署模板以指定是否要应用之前保存的 ADR 配置。 配置一个部署模板,其中包含你在创建其他 ADR 时可使用的多个常见更新部署属性。 这些模板可节省时间并有助于确保类似部署的一致性。 请选择下述一个内置软件更新部署模板:

      • “周二补丁日”模板提供在逐月部署软件更新时常用的设置。

      • “Office 365 客户端更新”模板提供了在部署 Microsoft 365 Apps 客户端更新时使用的通用设置。

        备注

        自 2020 年 4 月 21 日起,Office 365 专业增强版已重命名为 Microsoft 365 企业应用版。 从 2020 年 6 月 9 日开始,如果 ADR 依赖于“Title”属性,则需要对它进行编辑。 Microsoft 365 Apps Update - Semi-annual Channel Version 1908 for x64 based Edition (Build 11929.50000) 是新标题的示例。 有关针对标题更改修改 ADR 的详细信息,请参阅 Microsoft 365 应用的更新通道。 有关名称变更的详细信息,请参阅 Office 365 专业增强版的名称变更

      • “SCEP 和 Windows Defender 防病毒更新”模板提供了在部署 Endpoint Protection 定义更新时使用的常用设置。

    • 集合:指定要用于部署的目标集合。 集合的成员会收到部署中定义的软件更新。

    • 确定是将软件更新添加到新的还是现有的软件更新组中。 大多数情况下,选择在运行 ADR 时创建新的软件更新组。 如果按照更加主动的计划来运行规则,则可以选择使用现有组。 如果每天都针对定义更新运行规则,可将软件更新添加到现有的软件更新组中。

    • 运行此规则后启用部署:指定在 ADR 运行后是否启用软件更新部署。 请考虑使用以下选项进行此设置:

      • 启用部署时,系统将符合规则定义条件的更新添加到软件更新组中。 根据需要下载软件更新内容。 将内容复制到指定的分发点,并将更新部署到目标集合中的客户端。

      • 如果未启用部署,系统会将符合规则所定义的条件的更新添加到软件更新组中。 根据需要下载软件更新部署内容,并将其分发到指定的分发点。 站点在软件更新组上创建已禁用的部署,以防止将更新部署到客户端。 此选项让用户有时间为部署更新做准备、验证符合条件的更新是否足够,然后再启用部署。

  4. 在“部署设置”页面上配置下列设置:

    • 部署类型:从版本 2107 开始,可指定软件更新部署的部署类型。 在版本 2107 之前,所有由自动部署规则创建的部署都是必需的。

      • 选择“必需”,创建必需的软件更新部署。 在配置的安装截止时间之前,软件更新会自动安装在客户端上。

      • 选择“可用”,创建可选的软件更新部署。 用户可从软件中心安装此部署。

    • 使用 LAN 唤醒来唤醒客户端进行必需的部署:指定是否在截止时间启用 LAN 唤醒。 LAN 唤醒将唤醒数据包发送到需要部署中的一个或多个软件更新的计算机。 站点会在安装截止时间唤醒处于睡眠模式的所有计算机,以便启动安装。 处于睡眠模式且不需要部署中的任何软件更新的客户端不会启动。 默认情况下禁用此设置。 使用此选项前,请针对“LAN 唤醒”配置计算机和网络。 有关详细信息,请参阅如何配置 LAN 唤醒

    • 详细信息级别:指定客户端报告的更新强制状态消息的详细级别。

      重要

      部署定义更新时,请将详细信息级别设置为“仅限错误”,让客户端只在定义更新失败时报告状态消息。 否则,客户端将报告大量的状态消息,这可能会影响站点服务器的性能。

      备注

      “仅限错误”详细级别不会发送跟踪挂起的重新启动所需的的强制状态消息。

    • 许可条款设置:指定是否自动部署带相关许可条款的软件更新。 某些软件更新包括许可条款。 自动部署软件更新时,不显示许可条款,并且没有用于接受许可条款的选项。 选择自动部署所有软件更新而不考虑关联的许可条款,或者仅部署无关联许可条款的更新。

      • 要查看软件更新的许可条款,请在“软件库”工作区的“所有软件更新”节点中选择软件更新 。 在功能区中,单击“查看许可证”。

      • 要查找包含相关许可条款的软件更新,请将“许可条款”列添加到“所有软件更新”节点的结果窗格中 。 单击列标题以按带许可条款的软件更新进行排序。

  5. 在“软件更新”页面上,配置 ADR 检索并添加到软件更新组中的软件更新的条件。

    • ADR 中软件更新的限制为 1000 个软件更新。

    • 必要时,可对自动部署规则中软件更新的内容大小进行筛选。 有关详细信息,请参阅 Configuration Manager and simplified Windows servicing on down level operating systems(低级别操作系统上的 Configuration Manager 和简化的 Windows 维护)。

    • 自版本 1910 起,可将“已部署”用作自动部署规则的更新筛选器。 此筛选器可帮助确定可能需要部署到试点或测试集合的新更新。 软件更新筛选器还可帮助避免重新部署旧更新。

      • 请注意,将“已部署”用作筛选器时,你可能已将更新部署到其他集合,如试点或测试集合。
    • 自 1806 版本起,可使用“体系结构”属性筛选器。 此筛选器可用于排除不太常见的 Itanium 和 ARM64 等架构。 请记住,有 32 位 (x86) 应用程序和组件在 64 位 (x64) 系统上运行。 除非确定不需要 x86,否则在选择 x64 时也请启用它。

    备注

    Windows 10 1903 版以及更高版本都已经作为其自身产品添加到 Microsoft 更新中,而不像早期版本那样作为 Windows 10 产品的一部分进行添加 。 这项更改需要你执行许多手动步骤,才可确保客户端显示这些更新。 我们已采取措施减少了需要手动对 Configuration Manager 版本 1906 中的新产品执行操作的步骤数量。 有关详细信息,请参阅配置 Windows 10 各版本的产品

  6. 在“评估计划”页面上,指定是否要让 ADR 按计划运行。 启用后,请单击“自定义”以设置定期计划。

    • 计划的开始时间配置基于运行 Configuration Manager 控制台的计算机的本地时间。

    • ADR 评估的运行频率可以为一天三次。

    • 决不能设置频率超过软件更新同步计划的评估计划。 此页面显示软件更新点同步计划,以帮助你确定评估计划的频率。

    • 要手动运行 ADR,请在控制台的“自动部署规则”节点中选择规则,然后单击功能区中的“立即运行” 。

    • 自 1802 版本起,可安排 ADR 评估,使其偏移一个基准日。 例如,如果周二补丁日对你而言实际上是星期三,则可将评估计划设置为该月的第二个周二偏移一天。

      • 将评估安排在该月的最后一周并存在偏移时,如果所选偏移量溢出到下个月,则站点将评估安排在该月的最后一天。
        ADR 自定义评估计划基准日偏移
  7. 在“部署计划”页面上配置下列设置:

    • 计划评估:指定 Configuration Manager 评估可用时间和安装截止时间的时间。 选择使用协调世界时 (UTC) 或运行 Configuration Manager 控制台的计算机的本地时间。

      • 如果在此处选择“客户端本地时间”,并为“软件可用时间”选择“尽快”,则使用运行 Configuration Manager 控制台的计算机上的当前时间来评估何时有可用更新 。 此行为与安装截止日期和客户端安装更新的时间相同。 如果客户端位于其他时区,则在客户端的时间到达评估时间时发生这些操作。
    • 软件可用时间:选择以下设置之一以指定向客户端提供软件更新的时间:

      • 尽快:尽快将部署中的软件更新提供给客户端。 创建部署并选择此设置后,Configuration Manager 将更新客户端策略。 在下一个客户端策略轮询周期,客户端将注意到部署并获得可安装的软件更新。

      • 特定时间:在特定日期和时间向客户端提供部署中包含的软件更新。 创建部署并启用此设置后,Configuration Manager 将更新客户端策略。 在下一个客户端策略轮询周期,客户端将注意到部署。 但是,在配置的日期和时间之后,部署中的软件更新才可用于安装。

    • 安装截止时间:这些选项仅适用于所需部署。 选择以下设置之一以指定部署中的软件更新的安装截止时间:

      • 尽快:选择此设置以尽快自动安装部署中的软件更新。

      • 特定时间:选择此设置以在特定日期和时间自动安装部署中的软件更新。 通过将已配置的“特定时间”间隔添加到“软件可用时间”,Configuration Manager 可确定安装软件更新的截止时间。

        • 实际安装截止时间为显示的截止时间加上随机的一段时间(最多为 2 小时)。 如果采用随机时间,这可降低集合中客户端同时安装部署中的更新所带来的潜在影响。

        • “计算机代理”组中的“禁用截止时间随机化”不会覆盖随机化行为。 有关详细信息,请参阅计算机代理客户端设置

    • 根据用户首选项延迟对此部署的强制操作,最长延迟到客户端设置中定义的宽限期:如果启用此设置,则用户将有更多时间(超出截止时间)安装所需的软件更新。

      • 此行为通常发生在计算机长时间关闭并需要安装许多软件更新或应用程序时。 例如,用户休假回来时,由于客户端安装的部署已过期,因此需要等待很长的时间。

      • 在客户端设置中,通过“部署截止日期(小时)后执行的宽限期”属性来配置此宽限期。 有关详细信息,请参阅计算机代理部分。 强制宽限期适用于启用此选项的所有部署,并针对部署了客户端设置的设备。

      • 在截止日期之后,客户端将在用户配置的第一个非业务时间段内安装软件更新,直到此宽限期。 但是,用户仍可打开软件中心,随时安装软件更新。 一旦过了宽限期,对于未完成的部署,强制将恢复为正常行为。

  8. 在“用户体验”页面上配置下列设置:

    • 用户通知:指定是否在软件中心已配置的“软件可用时间”上显示通知。 此设置还控制是否通知客户端上的用户。

    • 截止时间行为:此设置仅对所需部署可配置。 指定软件更新部署达到任何已定义的维护时段外的截止日期时的行为。 选项包括是否要安装软件更新,以及安装后是否执行系统重启。 有关维护时段的详细信息,请参阅如何使用维护时段

      备注

      仅在为客户端设备配置维护时段时才适用。 如果设备上未定义维护时段,则在截止日期之后将始终会更新安装和重启。

    • 设备重启行为:此设置仅对所需部署可配置。 指定在需要重启才能完成更新安装的情况下,是否在服务器和工作站上抑制系统重启。

      警告

      在服务器环境中或在不希望目标计算机默认重启时,抑制系统重启非常有用。 但是,这样做会使计算机处于不安全的状态。 允许强制重启有助于确保立即完成软件更新安装。

    • Windows Embedded 设备的写入筛选器处理:此设置控制通过写入筛选器启用的 Windows Embedded 设备的安装行为。 选择此选项可在安装截止时间或维护时段提交更改。 选择此选项后需要重启,然后所作更改才能保留在设备上。 否则,将安装更新并将其应用到临时覆盖,稍后再进行提交。

      • 将软件更新部署到 Windows Embedded 设备时,请确保设备是配置了维护时段的集合的成员。
    • 重启时软件更新部署重新评估行为:选择此设置即可配置软件更新部署,从而让客户端在客户端安装软件更新并重启后立即运行软件更新符合性扫描。 此设置允许客户端检查在客户端重启之后变为适用状态的其他更新,然后在同一维护时段内安装它们。

  9. 在“警报”页面上,配置 Configuration Manager 为此部署生成警报的方式 。 在“软件库”工作区的“软件更新”节点中查看来自 Configuration Manager 的最新软件更新警报 。 如果还在使用 System Center Operations Manager,也请配置其警报。

  10. 在“下载设置”页面上,配置下列设置:

    • 指定客户端在使用来自相邻或默认站点边界组的分发点时是否应下载并安装更新。

    • 指定在无法从当前或相邻边界组中的分发点获得软件更新的内容时,客户端是否应从站点默认边界组中的分发点下载并安装更新。

    • 允许客户端与同一子网上的其他客户端共享内容:指定是否为内容下载启用 BranchCache。 有关详细信息,请参阅 BranchCache。 自版本 1802 起,BranchCache 始终在客户端上启用。 此设置已删除,因为只要分发点支持,客户端就会使用 BranchCache。

    • 如果软件更新在当前、相邻或站点边界组中的分发点上不可用,则从 Microsoft 更新处下载内容:选择此设置即可让连接 Intranet 的客户端在分发点上没有更新的情况下从 Microsoft 更新网站下载软件更新。 基于 Internet 的客户端始终转到 Microsoft 更新获取软件更新内容。

    • 指定在客户端使用按流量计费的 Internet 连接的情况下,是否允许客户端在安装截止日期之后下载内容。 Internet 提供商有时根据你在按流量计费的连接上发送和接收的数据量计费。

    备注

    客户端请求部署中的软件更新的管理点中的内容位置。 下载行为取决于在此页面上配置分发点、部署包和设置的方式。

  11. 在“部署包”页面上,请选择下列选项之一:

    • 选择部署包:将这些更新添加到现有部署包。

    • 创建新的部署包:将这些更新添加到新的部署包。 配置以下附加设置:

      • 名称:指定部署包的名称。 使用描述包内容的唯一名称。 限制为不超过 50 个字符。

      • 描述:指定提供有关该部署包的信息的说明。 可选说明限制为不超过 127 个字符。

      • 包源:指定软件更新源文件的位置。 键入源位置的网络路径(例如 \\server\sharename\path),或单击“浏览”以查找网络位置。 在进入到下一页之前,为部署包源文件创建共享文件夹。

        • 不能将指定的位置用作另一软件部署包的源。

        • 在 Configuration Manager 创建部署包之后,可在部署包属性中更改包源位置。 如果执行此操作,请先将原始包源中的内容复制到新的包源位置。

        • SMS 提供程序的计算机帐户和运行向导以下载软件更新的用户都必须具有对下载位置的“写入”权限。 限制对下载位置的访问。 此限制可降低攻击者篡改软件更新源文件的风险。

      • 发送优先级:指定部署包的发送优先级。 Configuration Manager 在将包发送到分发点时使用此优先级。 部署包按高、中或低这三个优先级顺序进行发送。 具有相同优先级的包按照其创建顺序发送。 如果没有积压工作 (backlog),则立即处理包,而不考虑优先级。

      • 启用二进制差异复制:启用此设置以对部署包使用二进制差异复制。 有关详细信息,请参阅二进制差异复制

    • 没有部署包:自 1806 版本起,无需先下载内容并将其分发到分发点,即可将软件更新部署到设备。 处理非常大的更新内容时,此设置很有用。 希望客户端始终从 Microsoft 更新云服务中获取内容时,也请使用此设置。 在此方案中的客户端还可以从已具有所需内容的对等节点下载内容。 Configuration Manager 客户端继续管理内容下载,因此可以利用 Configuration Manager 对等缓存功能或其他技术,如交付优化。 此功能支持受 Configuration Manager 软件更新管理支持的任何更新类型,包括 Windows 和 Microsoft 365 Apps 更新。

      备注

      选择此选项并应用设置后,将无法再更改它。 其他选项将灰显。

  12. 在“分发点”页面上,指定用于托管软件更新文件的分发点或分发点组。 有关分发点的详细信息,请参阅分发点配置。 只有当你在创建新的软件更新部署包时才能使用本页。

  13. 在“下载位置”页面上,指定是从 Internet 还是从本地网络下载软件更新文件。 配置下列设置:

    • 从 Internet 下载软件更新:选择此设置可从 Internet 上的指定位置下载软件更新。 默认情况下将启用此设置。

    • 从本地网络上的位置下载软件更新:选择此设置以从本地目录或共享文件夹中下载软件更新。 运行向导的计算机无法访问 Internet 时,此设置很有用。 任何具有 Internet 访问的计算机都可预先下载软件更新。 然后,将其存储在可从运行向导的计算机访问的本地网络上的某个位置中。 另一种情况可能是,下载通过 System Center Updates Publisher 或第三方修补解决方案发布的内容。 可以输入顶级软件更新点上的 WSUS 内容共享作为要从其中下载内容的网络位置(如 \\server\WsusContent)。

  14. 在“语言选择”页面上,选择站点按哪种语言下载所选的软件更新。 只有所选语言提供更新时,站点才能下载这些更新。 非语言特定的软件更新可随时下载。 默认情况下,向导会选择你已在软件更新点属性中配置的语言。 在继续进入下一页之前,必须选择至少一种语言。 只选择软件更新不支持的语言时,无法下载更新。

  15. 在“摘要”页上,检查配置设置。 若要将设置保存到部署模板,请单击“另存为模板”。 输入名称并选择要包含在模板中的设置,然后单击“保存”。 若要更改已配置的设置,请单击关联的向导页面,然后更改设置。

    • 模板名称可包含字母数字 ASCII 字符以及 \(反斜杠)或 '(单引号)。
  16. 单击“下一步”以创建 ADR。

完成向导后,运行 ADR。 它会将符合指定条件的软件更新添加到软件更新组。 接着,ADR 将更新下载到站点服务器上的内容库并将其分发到已配置的分发点。 然后,ADR 将软件更新组部署到目标集合中的客户端。

将新的部署添加到现有 ADR

创建 ADR 后,将其他部署添加到规则。 此操作有助于管理将不同更新部署到不同集合的复杂性。 每个新部署均具有完整的功能和部署监视体验。

将新的部署添加到现有 ADR 的过程

  1. 在 Configuration Manager 控制台中,转到“软件库”工作区,展开“软件更新”,选择“自动部署规则”节点,然后选择所需规则 。

  2. 在功能区中,单击“添加部署”。

  3. 在“添加部署”向导的“集合”页面上,配置与“创建自动部署规则”向导的“常规”页面类似的可用设置 。 有关详细信息,请参阅上一节创建 ADR 的过程。 “添加部署”向导的其余部分包括以下页面,它们同样与上述详细说明相对应:

    • 部署设置
    • 部署计划
    • 用户体验
    • 警报
    • 下载设置

此外可以使用 Windows PowerShell cmdlet 以编程方式添加部署。 有关使用此方法的完整说明,请参阅 New-CMSoftwareUpdateDeployment

有关部署过程的详细信息,请参阅 Software update deployment process

已知问题

错误代码 0x87D20417

场景: 运行 Configuration Manager 版本 2010 时,可能会注意到自动部署规则失败,并返回上一个错误代码 0x87D20417。 在 PatchDownloader.log 中,你会在 %temp% 目录中看到 Failed to create temp file with GetTempFileName() at temp location C:\Windows\TEMP\, error 80 和 0 字节的文件。

解决方法: 从 PatchDownloader.log 中指定的临时目录删除所有文件,然后重新运行 ADR。

解决方法: 安装 KB 4600089Microsoft Endpoint Configuration Manager Current Branch(版本 2010)的更新汇总。

应用自动部署规则的部署包设置的脚本

如果使用“无部署包”选项创建 ADR,将无法返回,稍后可以添加一个。 为了帮助你解决此问题,我们已将以下脚本上传到社区中心

提示

直接在社区中心打开此脚本。 有关详细信息,请参阅指向社区中心项的直接链接

<# Apply-ADRDeploymentPackageSettings #>

#=============================================
# START SCRIPT
#=============================================
param
(
[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[ValidateLength(1,256)]
[string]$sourceADRName,

[parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[ValidateLength(1,256)]
[string]$targetADRName
)

Try {
       # Source ADR that already has the needed deployment package. You may need to create one if it doesn’t exist.
       $sourceADR = Get-CMSoftwareUpdateAutoDeploymentRule -Name $sourceADRName

       # Target ADR that will be updated to use the source ADR’s deployment package. Typically, this is the ADR that used the “No deployment package” option. 
       $targetADR = Get-CMSoftwareUpdateAutoDeploymentRule -Name $targetADRName

       # Apply the deployment package settings
       $targetADR.ContentTemplate = $sourceADR.ContentTemplate

       # Update the wmi object
       $targetADR.Put()
}
Catch{
       $exceptionDetails = "Exception: " + $_.Exception.Message + "HResult: " + $_.Exception.HResult
       Write-Error "Failed to apply ADR deployment package settings: $exceptionDetails"
}
#=============================================
# END SCRIPT
#=============================================

后续步骤

监视软件更新