如何让 SCCM 客户端在操作系统部署后立即评估策略?

如何让 SCCM 客户端在操作系统部署后立即评估策略?

我有一个运行良好的 SCCM OS 部署任务序列 - 但有一个我似乎无法弄清楚的警告......

任务序列完成后,需要 4-16 小时来处理其客户端设置。这意味着新映像的计算机在此期间不会获得任何部署或 AV 设置。SCCM 客户端最终将与服务器同步,同步后,一切工作正常。但由于这个问题,我们基本上必须让计算机放置一夜才能将其交付给用户。除非我们在用户下班回家之前就重新映像一台有问题的计算机,否则在现场重新映像计算机是不可能的,这样当他们第二天早上上班时,计算机就可以准备好了。

一个特别的问题是 Endpoint Protection 客户端。在 Windows 10 上,没有办法(据我所知)将 Windows Defender 置于托管模式,因为它是操作系统的内置组件。我们必须等待 SCCM 客户端完成其工作,以便正确处理排除项(这是我们使用的特定应用程序所必需的)。

以下是相关详细信息:

  • 我们正在使用 SCCM 1710
  • 这在我们所有的图像上都会发生,无论是 Windows 7 还是 Windows 10。
  • 在配置管理器控制面板中手动触发客户端操作无论多少次都无法使其更快地应用策略。
  • 重新启动有问题的计算机没有任何作用。
  • 客户端最终同步后,一切正常。此后,部署、软件更新和策略评估均按计划进行。
  • SCCM 管理控制台显示客户端已安装并处于活动状态。
  • 我们的 SCCM 层次结构只有一个站点服务器,DB、DP、MP 和 SUP 角色都在其上运行。所有边界组均已正确配置。
  • AD 系统和用户发现每 24 小时发生一次,增量发现每 5 分钟启用一次。
  • 我们的任何集合都没有定义维护时段(我们大部分是 24/7 全天候运营)。无论如何,所有部署都设置为忽略维护时段。
  • 日志中没有错误或任何异常内容(尽管我承认我不太确定我在那里寻找什么)。

有什么方法可以强制客户端在映像过程中下载并应用策略?


更新:

我已将这个问题追溯到服务器端的发现过程。

在 SCCM 控制台中查看受影响的机器时,它显示客户端已安装、处于活动状态且运行正常,但资源管理器未显示任何数据。SCCM 对该设备一无所知 - 安装了什么操作系统、有什么硬件、安装了什么软件、位于哪个 OU... 什么都不知道。

我们的所有集合都是基于查询的,因此在数据可供查询之前,SCCM 不知道它应该在哪个集合中,因此不会向它公布任何内容。客户端应该在其发现周期内将这些数据填充到服务器,但是由于某种原因,它并没有这样做。

如果我强制重新发现 AD 系统、强制重新评估集合成员,并在客户端上手动触发站点操作,那么我可以在一小时左右的时间内让 SCCM 正常运行。但此时我实际上只是在随机按下按钮。我不知道这里的时间和操作顺序的组合是怎样的神奇秘诀。

  • AD 系统发现设置为每天运行,增量发现设置为 5 分钟。
  • 收集评估设置为每 7 天运行一次,增量发现也会在 5 分钟时启用。

但这些都毫无意义,因为填充并不需要整整 24 小时。如果我早上第一件事就是对一台机器进行成像,它通常会在下午晚些时候准备好,但发现要到半夜才会进行。

还:

  • 如果我使用相同的操作系统重新镜像现有机器,我只需在客户端触发站点操作,就能在一小时左右后让计算机正确评估。但这是因为 DB 已经有了这些计算机的记录,并且有关它们的任何信息都没有改变。

那么更新后的信息对任何人都有帮助吗?

答案1

如果您处于仅 HTTPS 模式,这可能会导致机器从您的证书颁发机构获取证书的延迟。

如果是这种情况,您将在 ccmexec.log 中看到一行“无法找到基于证书颁发者的任何证书”。

您需要先使其自动注册证书。

答案2

您所描述的行为似乎是预期之内的。

对你有帮助的叫做增量发现它会主动查找 AD 更改(例如将新计算机添加到目录中)并使其对 SCCM 可见。增量发现对于 SCCM 的发现方法叫做增量更新为其收藏品。

SCCM 发现方法

在此处输入图片描述

答案3

根据你所说的,我能想到的最长的链条是这样的:

Build -> AD System Discovery -> Collection Update -> Client Settings ->
Machine Policy -> Hardware Inventory -> Collection Update ->
Endpoint Protection Settings -> Machine Policy -> Done

可以通过以下几种方式来缩小这一范围:

  1. 硬件清单和端点保护的默认设置,而不是针对集合 - 即默认情况下安全/管理,根据需要覆盖
  2. 让您的集合依赖于从 AD 发现的属性,而不是从硬件清单发现的属性 - 您要确保集合包含客户端为 None 且客户端活动的系统。我的 Windows 10 集合具有 SMS_R_System.OperatingSystemNameandVersion,例如“%Microsoft Windows NT Workstation 10%”

我相信我没有这个问题,因为即使任务序列与集合成员资格存在竞争条件,集合成员资格也总是更快。

答案4

您可以使用 PowerShell,将其添加为任务序列中的任务:

Invoke-WmiMethod -Namespace root\ccm\clientsdk -Class CCM_ClientUtilities -Name GetMachinePolicy

相关内容