MDT 部署 Windows 系列 (X):高级 - 为多硬盘计算机创建系统用途磁盘选择菜单
前言
我在前面有写过 《Powershell实现多硬盘的电脑使用MDT or SCCM安装系统选择目的盘清单》 的文章(最早在2年前我的个人博客发出来),因为我这几年生产环境一直用的是SCCM
,MDT
当时只是简单自己测试通过,并没有做详细记录。但这段时间一直有网友一直和反馈这个方法在MDT
平台没法正常工作,今天抽空把环境复现并做记录,供大家参考。
需求背景
现在公司新购的ThinkPad或Dell笔记本和台式机部分机型预装为2块物理磁盘。默认情况下使用MDT
在线部署操作系统时,只能通过任务序列中选择指定的硬盘和分区进行部署系统。但有些机器Disk1
为固态磁盘,有些Disk0
为固态磁盘,不太方便选择系统安装的目的磁盘。而且有些时候 HelpDesk 会有一些奇葩的需求,要求系统安装在他指定的磁盘上,没有任何规则可言。
最终目标
实现针对不同机型,自动部署系统至正确的磁盘或弹框让Helpdesk人员部署系统时手动选择安装系统的目的磁盘。
操作步骤
以下内容、脚本在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
里面,如下图所示: -
访问:
MDTDeploymentShare\Scripts\
并创建Custom\ChooseDisk
目录(个人习惯,该目录用来存放后续使用的自定义脚本。也可以不创建,直接放在Scripts
目录底下) -
创建任务一
检查计算机是否存在多个硬盘
,任务类型为Run Powershell Script
-
将前面创建的
CheckDisk.ps1
脚本存放在MDTDeploymentShare\Scripts\Custom\ChooseDisk
,并在任务一Choose Disk
里执行(如下图所示),执行脚本如下:%ScriptRoot%\Custom\ChooseDisk\CheckDisk.ps1
-
创建任务二
选择安装系统的目的磁盘
,任务类型为Run Command Line
执行命令如下:%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
时,符合执行任务二的前提条件。
3.配置 PE 启动镜像组件
默认情况下 MDT PE 里是没有添加 Powershell 等相关模块的,这样会导致上述的脚本无法正常运行
选择以下组件
- PowerShell
- .NET Framework
- Storage Management Cmdlets
- Enhanced Storage
4.更新 MDT及Boot Image并替换至 WDS
使用效果
我将虚拟机新增一块磁盘(共计 2 块),然后从 WDS 引导启动,效果如下:
以上,完成在独立MDT
环境中实现基于计算机物理磁盘数量制作安装系统目的磁盘的选择菜单。Enjoy ~
补充更新: 我写博客一方面为了方便自己记录,另一方面是留给有类似需求的人参考,仅是参考,不能完全保证能在你的环境中实现一样的效果。如果你想加好友一起共同探讨,我很欢迎;如果只是加好友职责我的文章哪里有问题,在你的环境中不生效,并且不懂如何尊重别人如何提问,那么请你关闭离开我的博文,避免引发你的不快。
上述脚本请确保你的MDT版本(8456)以及ADK是最新的版本,并且我的是英文系统,部分中文操作系统中Powershell
脚本中的"
会变成“
从而导致脚本不能正常工作。
2023/03/28
上一篇: 使用 PhpMyAdmin 安装 LAMP 服务器
下一篇: 基片集成波导研究