Windows 10 就地升级回滚后,Configuration Manager 就地升级任务序列不会继续

本文可帮助你修复 Windows 10 就地升级回滚后 Configuration Manager 就地升级任务序列不会继续的问题。

原始产品版本: Configuration Manager(Current Branch - 版本 1902)、Configuration Manager(Current Branch - 版本 1810)
原始 KB 数: 4550023

现象

在 Configuration Manager 就地升级任务序列期间发生 Windows 10 就地升级回滚时,任务序列在回滚完成后不会继续。 在此方案中,在检查受影响设备上的日志文件时,你会注意到以下问题:

  • 如果使用 Configuration Manager Current Branch 版本 1902 或更低版本,并且 /postrollbackcontext system 未手动指定该选项:

    • 该文件 C:\$Windows.~BT\Sources\Rollback\setupact.log 显示回滚完成后,Windows 安装程序启动SetupRollback.cmd脚本:

      MOUPG SetupManager::ExecuteRollbackScripts: 运行回滚脚本: [C:\$WINDOWS.~BT\Sources\Scripts\setuprollback.cmd]
      MOUPG SetupManager::ExecuteRollbackScripts: Rollback script [C:\$WINDOWS.~BT\Sources\Scripts\setuprollback.cmd] 返回: [0x0]

    • SetupRollback.cmd脚本负责在回滚完成后恢复任务序列。 该文件 C:\Windows\SetupRollback.log 显示SetupRollback.cmd脚本确实恢复了任务序列。 但是,任务序列随后退出并返回了错误代码 -2147024891:

      <输入setuprollback.cmd的日期><日期>/<时间>
      <Day><Date-Time>>< Setting env var _SMSTSSetupRollback=TRUE
      <“日期>><-<时间>”设置注册表以在重新启动后恢复任务序列
      <日><日期>-<时间> 运行 C:\WINDOWS\CCM\\TSMBootstrap.exe以恢复任务序列
      ...
      <Day><Date-Time>>< ERRORLEVEL = -2147024891
      <Day><Date-Time>>< TSMBootstrap 未请求重启、重置注册表
      <日><日期>-<时间> 退出setuprollback.cmd

      错误代码 -2147024891 表示 拒绝访问。

    • Smsts.log文件在SetupRollback.log文件显示任务序列退出的同时记录以下错误消息:

      TSManager 错误任务序列管理器无法执行任务序列。 代码 0x80070005

      错误代码80070005也意味着 访问被拒绝

      Smsts.log文件还可能包含以下附加条目,其中包括错误代码80070005:

      TSManager g_TSManager.Run(), HRESULT=80070005
      TSManager hMap != 0,HRESULT=80070005
      TSManager m_pGlobalScope-open>(), HRESULT=80070005

      TSManager hMap != 0,HRESULT=80070005
      TSManager m_pGlobalScope-open>(), HRESULT=80070005
      TSManager this-open>(), HRESULT=80070005
      TSManager sMp.empty()=false, HRESULT=80004005

      Smsts.log中可能会重复包含错误代码80070005的日志条目。

    • 回滚完成后,并非所有以前的日志条目都发生。 相反,当某人在回滚完成后首次登录到设备时,会出现这些条目。

    • Smsts.log文件显示, /postrollbackcontext system 该选项未在用于通过任务序列启动就地升级的 Windows 安装程序命令行中使用:

      OSDUpgradeWindows 执行命令行:“C:\_SMSTaskSequence\Packages\<Package_ID\SETUP.EXE>” /ImageIndex 3 /auto Upgrade /quiet /noreboot /postoobe “C:\WINDOWS\SMSTSPostUpgrade\SetupComplete.cmd” /postrollback “C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd” /DynamicUpdate Disable with options (0, 0)

  • 如果你部署 Windows 10 版本 1903 或 1809,并且该 /postrollbackcontext system 选项是手动指定的(在 Configuration Manager Current Branch 版本 1902 或更低版本中)或自动(在 Configuration Manager Current Branch 版本 1906 或更高版本中):

    • Smsts.log文件显示 Windows 安装程序命令行包含 /postrollbackcontext system 选项:

      OSDUpgradeWindows 执行命令行:“C:\_SMSTaskSequence\Packages\<Package_ID\SETUP.EXE>” /ImageIndex 3 /auto Upgrade /quiet /noreboot /postoobe “C:\WINDOWS \SMSTSPostUpgrade\SetupComplete.cmd” /postrollback “C:\WINDOWS\SMSTSPostUpgrade\SetupRollback.cmd” /DynamicUpdate Disable /postrollbackcontext system with options (0, 0)

      但是,Smsts.log中的最后一个日志条目来自回滚发生前的时间范围。 回滚完成后的时间范围内没有日志条目。

    • 该文件 C:\$WINDOWS.~BT\Sources\Rollback\setupact.log 不包含指示已启动SetupRollback.cmd脚本的条目。

    • 该文件 C:\Windows\SetupRollback.log 不存在。

原因

出现此问题的原因如下:

  • 通过 Windows 10 安装程序选项启动 /PostRollback 的SetupRollback.cmd脚本回滚后,将恢复任务序列。 但是,在低于 1803 的 Windows 10 版本中,脚本仅在第一个用户登录后登录并使用第一个登录用户的权限登录时运行。 此行为会导致以下问题:

    • 回滚完成后,任务序列不会自动继续。 仅当用户尝试登录时,它才会继续。
    • 任务序列必须在系统上下文中运行才能正常工作。 当用户登录后任务序列继续时,它会在用户上下文而不是系统上下文中运行。 即使用户具有管理员权限,任务序列也会失败,并返回 “拒绝 访问”错误消息。
  • 此选项 /PostRollbackContext 在 Windows 10 版本 1803 及更高版本中可用。 使用此选项可以指定SetupRollback.cmd脚本是在系统帐户的上下文中还是在登录用户的帐户中运行。 当 /postrollbackcontext 选项设置为 系统时,SetupRollback.cmd脚本会在回滚完成后立即运行,而无需等待用户登录,并在系统帐户的上下文中运行。

    但是, /postrollbackcontext system 此选项不会自动添加到 Configuration Manager Current Branch 版本 1902 或更低版本中的 Windows 安装程序命令行。 如果不手动添加 /postrollbackcontext system 此选项,即使 Windows 10 版本为 1803 或更高版本,SetupRollback.cmd脚本仍会在用户上下文中运行。

  • Windows 10 版本 1903 和 1809 中的问题会阻止 /postrollbackcontext system 该选项正常工作。 在这两个版本的 Windows 10 中,如果指定了选项,则SetupRollback.cmd脚本永远不会运行 /postrollbackcontext system

解决方法

若要解决此问题,请更新到以下版本的 Configuration Manager 和 Windows 10:

  • Configuration Manager Current Branch 版本 1906 或更高版本
  • Windows 10 版本 1909 或更高版本

若要在不更新到 Configuration Manager Current Branch 版本 1906 和 Windows 10 版本 1909 的情况下解决此问题,请执行以下步骤:

  1. 如果 Windows 10 版本低于 1803,请更新到 Windows 10 版本 1803 或更高版本。 由于SetupRollback.cmd脚本无法在低于 1803 的 Windows 10 版本中的系统上下文中运行,因此在发生就地升级回滚后无法正确启动和继续 Configuration Manager 任务序列。

  2. 如果使用 Configuration Manager Current Branch 版本 1902 或更低版本,请通过任务序列变量OSDSetupAdditionalUpgradeOptions/postrollbackcontext system选项添加到 Windows 安装程序命令行。 为此,请在升级操作系统步骤之前添加“设置任务序列变量”步骤,将任务序列变量设置为OSDSetupAdditionalUpgradeOptions,然后将该值/postrollbackcontext system设置为 。

    注意

    从 Configuration Manager Current Branch 版本 1906 开始,在/postrollbackcontext system升级操作系统步骤期间会自动添加该选项。 更新到 Configuration Manager Current Branch 版本 1906 或更高版本后,删除将变量/postrollbackcontext system设置为OSDSetupAdditionalUpgradeOptions“设置任务序列变量”步骤。

  3. 如果 Windows 10 版本为 1903 或 1809,请使用以下方法之一更新 Windows 安装程序源文件:

    • 任务序列的升级操作系统步骤中,选择使用Windows 更新替代策略动态更新 Windows 安装程序,并使用默认Microsoft更新。 这些选项使安装程序能够在升级操作系统步骤期间执行动态更新操作,例如下载更新并将其应用到 Windows 安装程序源文件。

      注意

      此方法要求客户端在任务序列期间具有对公共Microsoft更新站点的 Internet 访问权限。

    • 下载日期为 2019 年 8 月或更高版本的 Windows 10 版本 1903 或 1809 的更新 ISO 文件。 下载 ISO 文件后,更新 操作系统升级包。 为此,请删除包源位置中的所有文件、装载更新的 ISO 文件、将装载的 ISO 中的文件复制到包源位置,然后使用“更新分发点”操作更新分发点上的包文件。

    • Microsoft 更新目录下载日期为 2019 年 8 月或更高版本的 Windows 10 版本 1903 或 1809 的动态更新。 下载动态更新后,从 CAB 文件提取内容,并将提取的文件复制到操作系统升级包“源”文件夹以覆盖现有文件。 然后。 使用 “更新分发点 ”操作更新分发点上的包文件。

参考