前言

我在前面有写过 《Powershell实现多硬盘的电脑使用MDT or SCCM安装系统选择目的盘清单》 的文章(最早在2年前我的个人博客发出来),因为我这几年生产环境一直用的是SCCMMDT当时只是简单自己测试通过,并没有做详细记录。但这段时间一直有网友一直和反馈这个方法在MDT平台没法正常工作,今天抽空把环境复现并做记录,供大家参考。


需求背景

现在公司新购的ThinkPad或Dell笔记本和台式机部分机型预装为2块物理磁盘。默认情况下使用MDT在线部署操作系统时,只能通过任务序列中选择指定的硬盘和分区进行部署系统。但有些机器Disk1为固态磁盘,有些Disk0为固态磁盘,不太方便选择系统安装的目的磁盘。而且有些时候 HelpDesk 会有一些奇葩的需求,要求系统安装在他指定的磁盘上,没有任何规则可言。


最终目标

实现针对不同机型,自动部署系统至正确的磁盘或弹框让Helpdesk人员部署系统时手动选择安装系统的目的磁盘。

MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单


操作步骤

以下内容、脚本在MDT2012 ~ MDT8456版本均测试通过,如有问题,可截图与我联系。

1.判断OSD目标机器是否存在多块物理硬盘

将以下PowerShell命令保存为CheckDisk.ps1,该脚本用途是获取目标机器的物理硬盘信息。这里做个简单排除,将USB的硬盘排除在外。并且如果结果大于 1说明有多块磁盘,这时候再创建一个变量$MoreThanOneHD并将其值设为$TRUE.

If ((Get-Disk | Where-Object -FilterScript {$_.Bustype -ne 'USB'}).Count -gt 1) {$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment;$TSEnv.Value(‘MoreThanOneHD’)= $true}

2.创建 MDT 任务序列

  • 打开部署任务,在格式化硬盘前面新建任务组,我是放在Preinstall里面,如下图所示:
    MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单
  • 访问:MDTDeploymentShare\Scripts\并创建Custom\ChooseDisk目录(个人习惯,该目录用来存放后续使用的自定义脚本。也可以不创建,直接放在Scripts目录底下)
    MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单
  • 创建任务一检查计算机是否存在多个硬盘,任务类型为Run Powershell Script
    MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单
  • 将前面创建的CheckDisk.ps1脚本存放在MDTDeploymentShare\Scripts\Custom\ChooseDisk,并在任务一Choose Disk里执行(如下图所示),执行脚本如下:

    %ScriptRoot%\Custom\ChooseDisk\CheckDisk.ps1

    请注意路径

  • 创建任务二选择安装系统的目的磁盘,任务类型为Run Command Line
    MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单 执行命令如下:

    %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File "%SCRIPTROOT%\Custom\ChooseDisk\ChooseDiskWPF.ps1"
  • 我将CheckDisk.ps1,ChooseDiskWPF.ps1以及其他所需文件及目录ChooseDisk打包,可以下载并解压缩存放在Scripts\Custom文件夹直接使用。

点我下载访问密码Blog.itpro.cc

  • 设置任务二选择安装系统的目的磁盘的执行前提条件。简单的解释一下其目的: 当物理磁盘只有一个时则不需要执行这一步;如果有多块物理磁盘,则需执行该模块弹出 GUI 界面让用户选择安装系统的目的磁盘。

    这里会用到CheckDisk.ps1这个脚本执行返回的变量$MoreThanOneHD值,即:当MoreThanOneHD=TRUE时,符合执行任务二的前提条件。
    MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单


3.配置 PE 启动镜像组件

默认情况下 MDT PE 里是没有添加 Powershell 等相关模块的,这样会导致上述的脚本无法正常运行

选择以下组件

  • PowerShell
  • .NET Framework
  • Storage Management Cmdlets
  • Enhanced Storage

MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单

4.更新 MDT及Boot Image并替换至 WDS

MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单


使用效果

我将虚拟机新增一块磁盘(共计 2 块),然后从 WDS 引导启动,效果如下:
MDT部署Windows系列 (十): 进阶篇—针对多硬盘计算机制作系统目的磁盘选择菜单


以上,完成在独立MDT环境中实现基于计算机物理磁盘数量制作安装系统目的磁盘的选择菜单。Enjoy ~