SCCM循环的OSD任务序列

更新:

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

题:

在我的组织里,我们有一个电脑实验室,每周都必须重新组装。 目前我们正在通过SCCM 2007做这件事。目前这是通过为每个工作OSD任务序列(TS)创build一个新的强制广告来完成的。 不过,我想通过重复设置一个广告来做到这一点。

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

我遇到的问题是,执行机器的reimage时,一个新的客户端得到安装,从而创build一个新的GUID。 这意味着我必须提供一些自动的方式来将新的客户端GUID读取到重复发送的TS所通告的集合。 当然,由于客户端有一个新的GUID,这意味着SCCM认为TS在这台机器上还没有运行,并且一旦它被读入集合就开始重新映像,从而有效地使机器进入无限的重build循环。

我曾考虑过简单地将客户端构build到映像中,以便通过重映像保持相同的GUID,但是这种方法还存在其他问题。

有关如何设置一个周期性的TS,每周重新映像一次机器的build议?

编辑:

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

  • 我试图运行的OSD任务序列大约需要一个半小时才能完成,这将在凌晨3点左右发生。 操作系统部署完成后,需要运行另一个TS,以安装最后一个由于某些程序限制而必须通过单独的TS完成的程序。

  • 其次,当我参考上面的GUID实际上指的是分配给新安装的ConfigMgr客户端的SMS GUID。 当然,还有其他的原因会产生一个新的SMS GUID,但是在这种情况下这些GUID不是什么问题。


解决scheme详情

从下面的newmanth的build议,我做了以下解决这个问题:

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

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

    • 维护时间 :上午3点 – 上午4点35分,每周重复一次。

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

      维护窗口必须大于或等于TS或程序的最大运行时间加上“播发程序客户端代理”倒数时间(我的设置为5分钟)。 由于我的TS将有一个90分钟的最大运行时间,我将不得不把我的窗口设置为95分钟。

    • 收集会员更新时间表 :上午4:45,每天复发。

      重build完成,维护时间在上午4:35closures。 我现在等待10分钟,好的措施,并安排收集会员更新,以重新添加新安装的客户端。 我可以在重build的同一天每周做一次,但是我每天都会做其他的事情。

      根据您的集合添加新客户端成员的方式,您可能还需要安排您的发现方法在发生此更新之前运行。 例如,如果您的集合添加了基于Active Directory组的新客户端成员,则需要先运行相应的Active Directory发现方法,以便新创build的客户端logging具有相应的Active Directory信息。 否则,新的客户logging将不会有任何AD组信息,也不会被添加到集合中。

使用上面的设置重build过程应该是这样的:

  1. 维护时间为凌晨3点。
  2. OSD任务序列从凌晨3点开始。
  3. OSD任务序列大概在1个半小时后(上午4:30)结束。
  4. 维护时间在上午4:35closures,防止TS立即重复。
  5. 收集会员更新在上午4:45重新添加新安装的客户端。
  6. 在客户端策略检索之后,运行上述第二个TS。
  7. 步骤1-6应该在下一周自动重复。

我想你可能可以通过设置每周一次的维护时间窗口来处理这个问题,并且总是重新运行广告。 确保窗口足够长以允许广告运行一次。 这将阻止后续运行,直到再次维护窗口。 Technet: http : //technet.microsoft.com/en-us/library/bb632801.aspx

这个问题被接受的答案确实帮助我为所描述的情况设置了一个工作解决scheme,并且在我的附加解决scheme中使用上述设置将会起作用。 然而,事实certificate,这并不是必须的,因为真正的问题是我的问题的核心是SCCM 2007错误已经被固定。

KB977203

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

不要让该知识库文章的标题欺骗你,因为这个特殊的错误会影响SCCM 2007中的更多内容。

注意 :虽然此修补程序已被其他几个修补程序取代,特别是此修补程序附带的CCMCertFix.exe实用程序仍然是需要,只有与此特定的修补程序。

以下是KB2028442的摘录,解释发生了什么事情:

问题是由ConfigMgr 2007客户端以混合模式自动生成的自签名证书引起的。 如果生成证书时客户端计算机上未安装KB977203 ConfigMgr 2007客户端修补程序,则证书将在KB974571中描述的友好名称中包含embedded的NULL字符。

使用OSD任务序列刷新PC时,ConfigMgr 2007客户端证书将从旧的Windows操作系统迁移到新的Windows操作系统。 如果原始Windows操作系统上的ConfigMgr 2007客户端证书具有KB974571中所述的友好名称中的embedded式NULL字符,并且如果将KB974571作为任务序列部署的参考映像的一部分进行安装,则当新的Windows操作系统安装, KB974571将阻止ConfigMgr 2007客户端证书与友好名称中的embedded式NULL字符进行迁移。 这将导致ConfigMgr 2007客户端无法安装。

现在在我的情况下,客户端安装得很好,但由于这个NULL字符的证书仍然没有得到适当的迁移,因此它只是在SCCM中创build新的客户端logging与不同的SMS GUID。 因此,每次我重build一个客户端机器时,我都必须运行一个集合成员身份更新来重新将客户机添加到集合中。 当然,因为ConfigMgr认为这是一个新的客户端机器,所以它没有任何运行OSD任务序列的logging,因此立即再次运行它,并将其有效地放入无限的重build循环中。

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

CCMCertFix.exe

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

要获得CCMCertFix.exe实用工具,您必须在服务器上安装KB977203修补程序,然后系统会提示您为其自动创build一个软件包。 使用创build的软件包,添加一个简单运行CCMCertFix.exe实用程序的新程序。

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