使用 Configuration Manager OSD 任务序列部署 Windows Server 2008 时,其他磁盘可能在任务序列完成时显示为脱机

以下文章最初发布于 Configuration Manager 支持团队博客网站。然而我们最近发现文中所描述的方法仅在从“操作系统安装包”部署(从 Windows 安装源文件部署)时有效。基于这一原因,我们最近更新了本文,以向用户介绍在从“操作系统映像”部署时所应进行的操作。

此外,在需要复制和粘贴针对无人参与文件的 XML 代码的部分中也存在一些问题。首个问题是 XML 代码曾环绕显示于博文中,这使得用户无法正确复制和粘贴 XML 代码。第二个问题是如果系统已经使用了一个现有的无人参与文件,但是系统并不需要该 XML 代码中的所有行。因此这使系统难以确定需要 XML 代码中的哪些行,以及这些行应粘贴到何处。因此,我更改了使用 Windows 系统映像管理器 (WISM) 来创建/编辑无人参与文件的指令。使用 WISM 可以确保无人参与文件将被正确创建/编辑。

请查看下面的已更新博文。 

在使用 Configuration Manager OSD 任务序列部署 Windows Server 2008 时,其他磁盘可能在任务序列完成时显示为脱机

症状

当使用 Configuration Manager 2007 OSD 任务序列来将 Windows Server 2008 或 Windows Server R2 部署到包含非本地磁盘(如 SAN 或 SAS 磁盘)的服务器时,其他任务可能无法在任务序列完成时恢复联机,并可能显示为脱机。特别是在磁盘管理中,其他磁盘可能显示为脱机,并显示如下消息:

Disk is offline due to a policy set by an administrator 

原因

这一问题通常出现于 Windows Server 2008 和 Windows Server 2008 R2 的企业版和数据中心版中,但是也有可能出现于标准版中。在 Windows Server 2008 和 Windows Server 2008 R2 的企业版和数据中心版中,默认的 SAN 策略是将磁盘设置为脱机。请参阅以下内容了解更多信息:

您可能在将 Windows Server 2008 中的 SAN 磁盘通过 Diskpart 恢复联机时看到“媒体受写入保护”错误或 VDS 错误 80070013
https://support.microsoft.com/kb/971436/

VDS_SAN_POLICY 枚举
https://msdn.microsoft.com/zh-cn/library/bb525577(VS.85).aspx

配置 SAN 策略
https://technet.microsoft.com/zh-cn/library/dd799290(WS.10).aspx

SanPolicy
https://technet.microsoft.com/zh-cn/library/ff715663(WS.10).aspx 

解决方法

要解决这一问题,对于 WinPE 阶段,需要将来自 KB971436 的步骤添加到任务序列中。此外,对于从“操作系统安装包”(Windows 源文件)部署的情形而言,需要将 SanPolicy TechNet 文章中所描述的组件和设置添加到 unattend.xml 文件中。对于从“操作系统映像”部署的情形而言,注册表项值需要更新为正确的 SAN 策略值。 

WinPE

将 SAN 联机,并使其在 WinPE 中可读取/写入: 

  1. 打开记事本
  2. 在记事本中复制以下行:
    select disk <disk#>
    online disk noerr
    attribute disk clear readonly noerr

    将 <disk#> 替换为 SAN/SAS 磁盘的磁盘号(不需要括号 <>)。noerr 选项被用于防止磁盘已经联机,且只读属性已经清除的情形中的错误消息。
  3. 使用以下名称保存该记事本文件
    sanpolicy.txt
  4. 在 Configuration Manager 2007 管理控制台中,在“计算机管理” -->“软件分发”--> “软件包”节点下,创建一个包含在第 2 和 3 步中创建的 sanpolicy.txt 文件的软件包。无需为该软件包创建程序。在创建完软件包后,请确保将该软件包复制到分发点。
  5. 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
  6. 在完成“格式化和分区磁盘”任务后,添加一项“运行命令行”任务。
  7. 在新创建的“运行命令行”任务中:
    • 勾选“软件包”选项,并单击“浏览...”按钮,然后选择在第 4 步创建的软件包。
    • 在“名称:”框中,键入:
      Set SAN Policy
    • 在“命令行:”框中,输入
      diskpart /s sanpolicy.txt
  8. 单击“应用”按钮,以保存任务序列。 

完整 Windows 操作系统 - 操作系统安装包

如果是从“操作系统安装包”(Windows 安装源文件)部署,要更改完整 Windows 操作系统的默认 SAN 策略,则需要添加一个自定义的 unattend.xml 文件,以更改设置。如果自定义的 unattend.xml 文件已在使用,那么需要修改现有的自定义 unattend.xml 文件,以添加为完整 Windows 操作系统更改默认 SAN 策略的设置:

  1. 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
  2. 在“应用操作系统”任务中,通过查看是否选中“使用无人参与或 sysprep 应答文件进行自定义安装”选项,确定是否正在使用现有的无人参与文件。如果选中该选项,则确定软件包和无人参与文件的文件名。完成后,单击“取消”按钮。
  3. 打开含于 Windows 自动安装工具包 (WAIK) 中的 Windows 系统映像管理器 (WISM)。默认情况下,任何 ConfigMgr 站点服务器上都将安装 WAIK,而且用户可在“开始”菜单中的“Microsoft Windows AIK”菜单内找到 WAIK。
  4. 当 WISM 打开后,在“Windows 映像”窗格中,查看是否已经打开一个 Windows 映像。如果已有,则通过右键单击此窗格中的顶部节点,并选择“关闭 Windows 映像”来关闭该映像。
  5. 在“Windows 映像”窗格中,右键单击“选择一个 Windows 映像或目录文件”并选择“选择 Windows 映像...”。
  6. 在“选择一个 Windows 映像”文件打开框中,导航到存储 Windows 安装源文件的文件夹位置。进入 Windows 安装源文件的文件夹后,导航到“源”文件夹,选择安装的 Windows 版本相应的 .CLG 目录文件,然后单击“打开”按钮。
  7. 在“应答文件”窗格中,查看是否已有打开的无人参与文件。如果已有,则通过右键单击此窗格中的顶部节点,并选择“关闭应答文件”。
  8. 在“应答文件”窗格中,右键单击“创建或打开一个应答文件”。
  9. 从第 2 步开始,基于是否已有正在使用的无人参与文件,执行以下操作:
    • 如果不存在正在使用的无人参与文件,则选择选项“新建应答文件...”,以创建一个新的应答文件。
    • 如果已有一个正在使用的无人参与文件,则选择选项“打开应答文件...”,导航到第 2 步中软件包/文件名所确定的应答文件包源位置,然后单击“打开”按钮。
  10. 在“Windows 映像”窗格中,展开“组件”。
  11. 滚动并定位组件“amd64_Microsoft-Windows-PartitionManager”(x64 操作系统)或“x86_Microsoft-Windows-PartitionManager”(x86 操作系统),然后右键单击该组件,并选择“向 Pass 2 OfflineServing 添加设置”。
  12. 在“应答文件”中的“2 offlineServicing”节点下,请确保选中“amd64_Microsoft-Windows-PartitionManager”(x64 操作系统)或“x86_Microsoft-Windows-PartitionManager”(x86 操作系统)。
  13. 在“Microsoft-Windows-PartitionManager 属性”窗格中的“设置”部分下,将“SanPolicy”从 2 更改为 1。
  14. 在“文件”菜单下,选择“保存应答文件”。
    • 对于现有的应答文件,应答文件将被自动保存。
    • 对于新的应答文件,系统将打开“另存为”对话框,提示用户保存应答文件的位置。使用 unattend.xml 作为保存文件的名称,并将其保存到所需位置(即软件包源文件夹)。
  15. 当保存应答文件后,关闭 WISM。
  16. 如果第 9 步创建了新的无人参与文件,则跳至第 18 步。
  17. 如果第 9 步中使用了现有的无人参与文件,则在 Configuration Manager 管理控制台中更新包含从第 14 步获得的无人参与文件的软件包的分发点。当分发点更新后,无需进一步采取其他步骤,剩余步骤可跳过。
  18. 在 Configuration Manager 2007 管理控制台中,在“计算机管理” -->“软件分发 -->“软件包”节点下,创建一个包含在第 14 步中保存的 unattend.xml 文件的新软件包。无需为该软件包创建程序。在创建完软件包后,请确保将软件包复制到分发点。
  19. 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
  20. 在“应用操作系统”任务中,勾选“使用一个无人参与或 sysprep 应答文件进行自定义安装”选项。接着进入“软件包:”字段,单击“浏览...”按钮,并选择在第 18 步中创建的软件包。接着进入“文件名称:”字段,输入 unattend.xml
  21. 单击“应用”按钮,以保存任务序列。 

完整 Windows 操作系统 - 操作系统映像

如果是从“操作系统映像”部署,那么无人参与文件无法被用于更改完整 Windows 操作系统的默认 SAN 策略。当使用 Configuration Manager OSD 任务序列从一个映像部署时,Windows 安装将始终不会在 WinPE 分区部署期间运行。因此,系统将始终不会处理传送 offlineServicing 的设置。由于 Microsoft-Windows-PartitionManager 组件和 SanPolicy 策略仅可被添加到 offlineServicing 传送设置,因此用户需使用一个非使用无人参与文件的方法。等效注册表项值可在操作系统映像被应用后修改,而无需通过无人参与文件更改 SanPolicy 设置。要在从映像部署时更改完整 Windows 操作系统的默认 SAN 策略,请遵循以下步骤:

  1. 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。

  2. 在任务序列中,定位并选择“格式化和分区磁盘”任务,该任务将准备安装 Windows 操作系统的驱动器。

  3. 在“格式化和分区磁盘”任务中,在“卷:”部分中,双击 Windows 操作系统将安装到的卷。

  4. 在“分区属性”窗口中,如果“变量:”字段旁尚无变量名称,则输入:
    OSDPART
    如果该字段中已有一个变量名称,则记录下该变量,但不要替换它。

  5. 在“分区属性”窗口,单击“确定”按钮。 

  6. 在任务序列中,定位并选择“应用操作系统映像”任务。

  7. 单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“应用操作系统映像”任务后立即添加一个“运行命令行”任务。

  8. 在新创建的“运行命令行”任务中:

    • 在“名称:”文本框中,输入:
      Load System Hive

    • 在“命令行:”文本框中,输入以下注册命令:
      reg load HKU\temp "%OSPART%\Windows\System32\Config\System"
      如果已经存在一个在第 4 步中输入的变量名称,则在上述命令行中将“OSPART”替换为来自第 4 步的变量名称。

  9. 在任务序列中,选择新创建的“加载系统配置单元”任务。

  10. 单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“加载系统配置单元”任务后立即添加一个“运行命令行”任务。

  11. 在新创建的“运行命令行”任务中:

    • 在“名称:”文本框中,输入:
      Change default SAN policy
    • 在“命令行:”文本框中,输入以下注册命令:
      reg add HKU\temp\ControlSet001\HKLM\System\CurrentControlSet\Services\partmgr\Parameters /v SanPolicy /t REG_DWORD /d 1 /f
  12. 在任务序列中,选择新创建的“更改默认 SAN 策略”任务。

  13. 单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“更改默认 SAN 策略”任务后立即添加一个“运行命令行”任务。

  14. 在新创建的“运行命令行”任务中:

    • 在“名称:”文本框中,输入:
      Unload System Hive
    • 在“命令行:”文本框中,输入以下注册命令:
      reg unload HKU\temp
  15. 单击“确定”或“应用”按钮来保存任务序列。 

阅读完整博客:

https://blogs.technet.com/b/system_center_configuration_manager_operating_system_deployment_support_blog/archive/2012/01/23/when-deploying-windows-server-2008-using-an-configuration-manager-osd-task-sequence-additional-disks-may-show-as-offline-when-the-task-sequence-completes.aspx