前言
我在前面有寫過 《Powershell實作多硬碟的電腦使用MDT or SCCM安裝系統選擇目的盤清單》 的文章(最早在2年前我的個人部落格發出來),因為我這幾年生産環境一直用的是
SCCM
,
MDT
當時隻是簡單自己測試通過,并沒有做詳細記錄。但這段時間一直有網友一直和回報這個方法在
MDT
平台沒法正常工作,今天抽空把環境複現并做記錄,供大家參考。
需求背景
現在公司新購的ThinkPad或Dell筆記本和桌上型電腦部分機型預裝為2塊實體磁盤。預設情況下使用
MDT
線上部署作業系統時,隻能通過任務序列中選擇指定的硬碟和分區進行部署系統。但有些機器
Disk1
為固态磁盤,有些
Disk0
為固态磁盤,不太友善選擇系統安裝的目的磁盤。而且有些時候 HelpDesk 會有一些奇葩的需求,要求系統安裝在他指定的磁盤上,沒有任何規則可言。
最終目标
實作針對不同機型,自動部署系統至正确的磁盤或彈框讓Helpdesk人員部署系統時手動選擇安裝系統的目的磁盤。

操作步驟
以下内容、腳本在MDT2012 ~ MDT8456版本均測試通過,如有問題,可截圖與我聯系。
1.判斷 OSD
目标機器是否存在多塊實體硬碟
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
MDT部署Windows系列 (十): 進階篇—針對多硬碟計算機制作系統目的磁盤選擇菜單 - 建立任務二
,任務類型為選擇安裝系統的目的磁盤
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