SCCM 重复 OSD 任务序列

SCCM 重复 OSD 任务序列

更新:

下面的问题是在下面接受的答案的帮助下解决的。然而,问题的实际原因是由于一个错误。我在下面添加了另一个答案,其中包含此错误的详细信息以及已发布的修补程序解决方案的详细信息。

问题:

在我的组织中,我们有一个计算机实验室,必须每周重新映像一次。我们目前通过 SCCM 2007 进行此操作。目前,这是通过每周为工作 OSD 任务序列 (TS) 创建一个新的强制广告来完成的。但是,我想通过按重复计划设置一个广告来实现这一点。

为了使 TS 在机器上重复运行,您必须启用广告选项“始终重新运行程序”,否则 TS 将只运行一次。

我遇到的问题是,在对机器执行重新映像时,会安装新的客户端,从而创建新的 GUID。这意味着我必须提供某种自动方式将新客户端 GUID 重新添加到宣传重复 TS 的集合中。当然,由于客户端有新的 GUID,这意味着 SCCM 认为 TS 尚未在此机器上运行,并在将其重新添加到集合后立即开始重新映像,从而有效地将机器置于无限重建循环中。

我曾考虑过简单地将客户端构建到图像中,以便它在重新映像过程中保持相同的 GUID,但该方法还存在其他问题。

关于如何设置每周重新映像一次机器的循环 TS,有什么建议吗?

编辑:

为了澄清一些事情,我将更好地解释一下情况:

  • 我尝试运行的 OSD 任务序列大约需要一个半小时才能完成,大约在凌晨 3 点左右。完成 OS 部署后,需要运行另一个 TS 来安装最后一个程序,由于某些程序限制,该程序必须通过单独的 TS 来完成。

  • 其次,当我提到上面的 GUID 时,我实际上指的是分配给新安装的 ConfigMgr 客户端的 SMS GUID。当然,创建新的 SMS GUID 还有其他原因,但在这种情况下这些都不是问题。


解决方案详细信息:

根据下面 newmanth 的建议,我做了以下事情来解决这个问题:

  1. 对于 OSD 任务序列和相关广告,我设置了以下设置:

    • 允许最大运行时间(分钟):90(TS 属性 -> 高级)
    • 程序重新运行行为:始终重新运行程序(广告属性->时间表)
    • 广告时间表:凌晨 3 点,每周重复一次
       
  2. 对于包含相关计算机的集合,我使用了以下设置:

    • 维护窗口持续时间:凌晨 3 点至凌晨 4:35,每周重复一次。

      我还选中了“此计划仅适用于操作系统部署任务序列”选项。这允许我在维护窗口之外运行上面提到的第二个 TS,但可以防止在将客户端重新添加到集合后立即重新进行重建。

      维护窗口必须大于或等于 TS 或程序的最大运行时间加上广告程序客户端代理倒计时持续时间(我的设置为 5 分钟)。由于我的 TS 的最大运行时间为 90 分钟,因此我必须将窗口设置为 95 分钟。

    • 收藏会员资格更新时间表:凌晨 4:45,每日重复。

      重建已完成,维护窗口于凌晨 4:35 关闭。我现在等待 10 分钟以进行良好测量,并安排集合成员资格更新以重新添加新安装的客户端。我可以在重建的同一天每周执行此操作,但出于其他原因,我每天都执行此操作。

      根据您的集合添加新客户端成员的方式,您可能还需要安排在更新发生之前运行您的发现方法。例如,如果您的集合基于 Active Directory 组添加新客户端成员,那么您将需要首先运行相应的 Active Directory 发现方法,以便新创建的客户端记录填充其相应的 Active Directory 信息。否则,新客户端记录将没有任何 AD 组信息,也不会添加到集合中。

使用上述设置,重建过程应如下所示:

  1. 维护窗口于凌晨 3 点开放。
  2. OSD 任务序列于凌晨 3 点开始。
  3. OSD 任务序列大约 1 个半小时后 (凌晨 4:30) 结束。
  4. 维护窗口于凌晨 4:35 关闭,以防止 TS 立即重复。
  5. 收集会员资格于凌晨 4:45 更新,重新添加新安装的客户端。
  6. 客户端策略检索之后,上面提到的第二个 TS 将运行。
  7. 步骤 1-6 应在下周自动重复。

答案1

我认为您可以通过为相关集合设置每周一次的维护窗口并始终重新运行广告来实现这一点。确保窗口长度足以让广告运行一次。这将阻止后续运行,直到维护窗口再次到来。Technet:http://technet.microsoft.com/en-us/library/bb632801.aspx

答案2

这个问题的可接受答案确实帮助我为所述情况设置了一个可行的解决方案,并且在我附加的解决方案中使用上述设置将起作用。然而,事实证明这是不必要的,因为我的问题的真正核心问题是由于 SCCM 2007 错误,该错误现已得到修复。

KB977203

http://support.microsoft.com/kb/977203

不要让该知识库文章的标题欺骗您,因为这个特定的错误对 SCCM 2007 的影响比它最初指示的要多。

笔记注意:尽管此修补程序已被其他几个修补程序所取代,但此修补程序附带的 CCMCertFix.exe 实用程序仍然是需要的,并且只随此特定修补程序附带。

以下是摘录KB2028442这解释了正在发生的事情:

该问题是由 ConfigMgr 2007 客户端在混合模式下自动生成的自签名证书引起的。如果KB977203如果生成证书时客户端 PC 上未安装 ConfigMgr 2007 客户端补丁,则证书的友好名称中将嵌入 NULL 字符,如KB974571

当使用 OSD 任务序列刷新 PC 时,ConfigMgr 2007 客户端证书将从旧 Windows 操作系统迁移到新 Windows 操作系统。如果原始 Windows 操作系统上的 ConfigMgr 2007 客户端证书在友好名称中嵌入了 NULL 字符(如KB974571, 而如果KB974571作为任务序列部署的参考映像的一部分进行安装,然后在安装新的 Windows 操作系统时,KB974571将阻止迁移友好名称中嵌入 NULL 字符的 ConfigMgr 2007 客户端证书。这将导致 ConfigMgr 2007 客户端安装失败。

现在,在我的例子中,客户端安装得很好,但由于这个 NULL 字符,证书仍然无法正确迁移,因此它只是在 SCCM 中使用不同的 SMS GUID 创建新的客户端记录。因此,每次我重建客户端计算机时,我都必须运行集合成员资格更新以将客户端重新添加到集合中。当然,由于 ConfigMgr 认为这是一台新的客户端计算机,它没有运行 OSD 任务序列的记录,因此立即再次运行它,从而有效地将其置于无限重建循环中。

在将此修复程序应用于客户端后(我实际上使用了KB977384修复它(取代它)并在 OSD 任务序列运行之前运行 CCMCertFix 实用程序,我将不再获得最近重建的客户端的新 SMS GUID,因此不再需要将客户端重新添加到集合中,并且 OSD TS 现在会看到它刚刚在客户端上成功运行,并且不会再次尝试重建它。

证书修复工具

CCMCertFix.exe 实用程序必须在 TS 启动之前运行。这意味着它不会作为 TS 中的一个步骤运行。要执行此操作,您必须转到 TS 的属性,在“高级”选项卡上有一个“先运行另一个程序”选项。您还需要设置“始终先运行此程序”选项。

要获得 CCMCertFix.exe 实用程序,您必须安装KB977203服务器上的修补程序,然后系统将提示您为其自动创建一个包。使用创建的包,只需运行 CCMCertFix.exe 实用程序即可添加新程序。

对我来说,我已经安装了KB977384首先,它取代了此修补程序。它仍然成功运行并为我创建了包。我也不需要将该修补程序部署到客户端,因为我已经在应用KB977384修补程序。

相关内容