使用 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 中可读取/写入:
- 打开记事本
- 在记事本中复制以下行:
select disk <disk#>
online disk noerr
attribute disk clear readonly noerr
将 <disk#> 替换为 SAN/SAS 磁盘的磁盘号(不需要括号 <>)。noerr 选项被用于防止磁盘已经联机,且只读属性已经清除的情形中的错误消息。 - 使用以下名称保存该记事本文件
sanpolicy.txt - 在 Configuration Manager 2007 管理控制台中,在“计算机管理” -->“软件分发”--> “软件包”节点下,创建一个包含在第 2 和 3 步中创建的 sanpolicy.txt 文件的软件包。无需为该软件包创建程序。在创建完软件包后,请确保将该软件包复制到分发点。
- 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
- 在完成“格式化和分区磁盘”任务后,添加一项“运行命令行”任务。
- 在新创建的“运行命令行”任务中:
- 勾选“软件包”选项,并单击“浏览...”按钮,然后选择在第 4 步创建的软件包。
- 在“名称:”框中,键入:
Set SAN Policy - 在“命令行:”框中,输入
diskpart /s sanpolicy.txt
- 单击“应用”按钮,以保存任务序列。
完整 Windows 操作系统 - 操作系统安装包
如果是从“操作系统安装包”(Windows 安装源文件)部署,要更改完整 Windows 操作系统的默认 SAN 策略,则需要添加一个自定义的 unattend.xml 文件,以更改设置。如果自定义的 unattend.xml 文件已在使用,那么需要修改现有的自定义 unattend.xml 文件,以添加为完整 Windows 操作系统更改默认 SAN 策略的设置:
- 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
- 在“应用操作系统”任务中,通过查看是否选中“使用无人参与或 sysprep 应答文件进行自定义安装”选项,确定是否正在使用现有的无人参与文件。如果选中该选项,则确定软件包和无人参与文件的文件名。完成后,单击“取消”按钮。
- 打开含于 Windows 自动安装工具包 (WAIK) 中的 Windows 系统映像管理器 (WISM)。默认情况下,任何 ConfigMgr 站点服务器上都将安装 WAIK,而且用户可在“开始”菜单中的“Microsoft Windows AIK”菜单内找到 WAIK。
- 当 WISM 打开后,在“Windows 映像”窗格中,查看是否已经打开一个 Windows 映像。如果已有,则通过右键单击此窗格中的顶部节点,并选择“关闭 Windows 映像”来关闭该映像。
- 在“Windows 映像”窗格中,右键单击“选择一个 Windows 映像或目录文件”并选择“选择 Windows 映像...”。
- 在“选择一个 Windows 映像”文件打开框中,导航到存储 Windows 安装源文件的文件夹位置。进入 Windows 安装源文件的文件夹后,导航到“源”文件夹,选择安装的 Windows 版本相应的 .CLG 目录文件,然后单击“打开”按钮。
- 在“应答文件”窗格中,查看是否已有打开的无人参与文件。如果已有,则通过右键单击此窗格中的顶部节点,并选择“关闭应答文件”。
- 在“应答文件”窗格中,右键单击“创建或打开一个应答文件”。
- 从第 2 步开始,基于是否已有正在使用的无人参与文件,执行以下操作:
- 如果不存在正在使用的无人参与文件,则选择选项“新建应答文件...”,以创建一个新的应答文件。
- 如果已有一个正在使用的无人参与文件,则选择选项“打开应答文件...”,导航到第 2 步中软件包/文件名所确定的应答文件包源位置,然后单击“打开”按钮。
- 在“Windows 映像”窗格中,展开“组件”。
- 滚动并定位组件“amd64_Microsoft-Windows-PartitionManager”(x64 操作系统)或“x86_Microsoft-Windows-PartitionManager”(x86 操作系统),然后右键单击该组件,并选择“向 Pass 2 OfflineServing 添加设置”。
- 在“应答文件”中的“2 offlineServicing”节点下,请确保选中“amd64_Microsoft-Windows-PartitionManager”(x64 操作系统)或“x86_Microsoft-Windows-PartitionManager”(x86 操作系统)。
- 在“Microsoft-Windows-PartitionManager 属性”窗格中的“设置”部分下,将“SanPolicy”从 2 更改为 1。
- 在“文件”菜单下,选择“保存应答文件”。
- 对于现有的应答文件,应答文件将被自动保存。
- 对于新的应答文件,系统将打开“另存为”对话框,提示用户保存应答文件的位置。使用 unattend.xml 作为保存文件的名称,并将其保存到所需位置(即软件包源文件夹)。
- 当保存应答文件后,关闭 WISM。
- 如果第 9 步创建了新的无人参与文件,则跳至第 18 步。
- 如果第 9 步中使用了现有的无人参与文件,则在 Configuration Manager 管理控制台中更新包含从第 14 步获得的无人参与文件的软件包的分发点。当分发点更新后,无需进一步采取其他步骤,剩余步骤可跳过。
- 在 Configuration Manager 2007 管理控制台中,在“计算机管理” -->“软件分发 -->“软件包”节点下,创建一个包含在第 14 步中保存的 unattend.xml 文件的新软件包。无需为该软件包创建程序。在创建完软件包后,请确保将软件包复制到分发点。
- 在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
- 在“应用操作系统”任务中,勾选“使用一个无人参与或 sysprep 应答文件进行自定义安装”选项。接着进入“软件包:”字段,单击“浏览...”按钮,并选择在第 18 步中创建的软件包。接着进入“文件名称:”字段,输入 unattend.xml
- 单击“应用”按钮,以保存任务序列。
完整 Windows 操作系统 - 操作系统映像
如果是从“操作系统映像”部署,那么无人参与文件无法被用于更改完整 Windows 操作系统的默认 SAN 策略。当使用 Configuration Manager OSD 任务序列从一个映像部署时,Windows 安装将始终不会在 WinPE 分区部署期间运行。因此,系统将始终不会处理传送 offlineServicing 的设置。由于 Microsoft-Windows-PartitionManager 组件和 SanPolicy 策略仅可被添加到 offlineServicing 传送设置,因此用户需使用一个非使用无人参与文件的方法。等效注册表项值可在操作系统映像被应用后修改,而无需通过无人参与文件更改 SanPolicy 设置。要在从映像部署时更改完整 Windows 操作系统的默认 SAN 策略,请遵循以下步骤:
在 Configuration Manager 2007 管理控制台中,在“计算机管理”-->“操作系统部署”-->“任务序列”节点下,右键单击受影响的任务序列,并选择“属性”。
在任务序列中,定位并选择“格式化和分区磁盘”任务,该任务将准备安装 Windows 操作系统的驱动器。
在“格式化和分区磁盘”任务中,在“卷:”部分中,双击 Windows 操作系统将安装到的卷。
在“分区属性”窗口中,如果“变量:”字段旁尚无变量名称,则输入:
OSDPART
如果该字段中已有一个变量名称,则记录下该变量,但不要替换它。在“分区属性”窗口,单击“确定”按钮。
在任务序列中,定位并选择“应用操作系统映像”任务。
单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“应用操作系统映像”任务后立即添加一个“运行命令行”任务。
在新创建的“运行命令行”任务中:
在“名称:”文本框中,输入:
Load System Hive在“命令行:”文本框中,输入以下注册命令:
reg load HKU\temp "%OSPART%\Windows\System32\Config\System"
如果已经存在一个在第 4 步中输入的变量名称,则在上述命令行中将“OSPART”替换为来自第 4 步的变量名称。
在任务序列中,选择新创建的“加载系统配置单元”任务。
单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“加载系统配置单元”任务后立即添加一个“运行命令行”任务。
在新创建的“运行命令行”任务中:
- 在“名称:”文本框中,输入:
Change default SAN policy - 在“命令行:”文本框中,输入以下注册命令:
reg add HKU\temp\ControlSet001\HKLM\System\CurrentControlSet\Services\partmgr\Parameters /v SanPolicy /t REG_DWORD /d 1 /f
- 在“名称:”文本框中,输入:
在任务序列中,选择新创建的“更改默认 SAN 策略”任务。
单击“添加”菜单,并选择“常规”-->“运行命令行”。这应该在“更改默认 SAN 策略”任务后立即添加一个“运行命令行”任务。
在新创建的“运行命令行”任务中:
- 在“名称:”文本框中,输入:
Unload System Hive - 在“命令行:”文本框中,输入以下注册命令:
reg unload HKU\temp
- 在“名称:”文本框中,输入:
单击“确定”或“应用”按钮来保存任务序列。
阅读完整博客:
Comments
- Anonymous
June 05, 2013
嘗試與您的朋友得到充足的休息。而此時,我們會做的你,你的工作。我們寫的文憑,課程和其他工作。<a href="lunwenwang.biz/.../a>