WDS+MDT網路啟動自動部署windows(十一)硬碟分割槽格式化全自動

上官飞鸿發表於2024-04-27

簡介:

雖然WDS+MDT在單硬碟很方便,但是各種大硬碟,小固態加大硬碟的地方,還是有若干不便之處。

如:第二塊硬碟未分割槽格式化,需要手動選擇安裝磁碟,如果固態超過250G,是否需要分為兩個區?

自動選擇較小的硬碟

目前我這裡的終端都是小固態,大機械,那麼我們要嘗試一下自動選擇較小的硬碟作為系統安裝盤。

透過磁碟大小排序,找到最小磁碟的序號,並將該序號賦值給安裝盤號。

新建任務序列

還是command line,

#Choose_Smallest_Disk
$mindisk= (Get-Disk | Where-Object -FilterScript {$_.Bustype -ne 'USB'}) | Select-Object Number, Size | Sort-Object Size | Select-Object -First 1$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment
$TSEnv.Value(“OSDDiskIndex”) = $mindisk.Number
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File "%SCRIPTROOT%\Custom\Choose_Smallest_Disk.ps1"

升級映象,替換映象,測試

我將虛擬機器硬碟換了換位置,0是大盤,3是小盤。

測試正常,如果遇到 FAILURE ( 5616 ): 15250: Verify BCDBootEX,請刪除磁碟所有分割槽。

mdt+wds的bug FAILURE ( 5616 ): 15250: Verify BCDBootEX - 上官飛鴻 - 部落格園 (cnblogs.com)

格式化其他盤

為了生成純淨的系統,我也並不想裝完系統再去分割槽格式化第二個盤。

指令碼Format_Other_Disk.ps1

#Format_Other_Disk.ps1
$TSEnv
= New-Object -COMObject Microsoft.SMS.TSEnvironment $osddiskid = $tsenv.Value("OSDDiskIndex") $disks = (Get-Disk | Where-Object -FilterScript { $_.Bustype -ne 'USB' }) | % { $_.Number } foreach ($disk in $disks) { if ($disk -cne $osddiskid) { #初始化磁碟 Initialize-Disk -Number $disk -PartitionStyle GPT -Confirm:$false 2> $null #如果磁碟已經有分割槽,清理所有分割槽 Get-Disk -Number $disk | Get-Partition | Remove-Partition -Confirm:$false 2> $null #開始格式化,格式化為一個區 New-Partition -DiskNumber $disk -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel "資料磁碟" -Confirm:$false 2> $null } }
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File "%SCRIPTROOT%\Custom\Format_Other_Disk.ps1"

放在選擇磁碟後面即可。

重新分割槽目標盤

為避免FAILURE ( 5616 ): 15250: Verify BCDBootEX錯誤。

我們刪除系統盤所有分割槽吧。

指令碼Format_OSD_Disk.ps1

#Format_OSD_Disk.ps1
$TSEnv
= New-Object -COMObject Microsoft.SMS.TSEnvironment $osddiskid = $tsenv.Value("OSDDiskIndex") #初始化磁碟 Initialize-Disk -Number $osddiskid -PartitionStyle GPT -Confirm:$false 2> $null #如果磁碟已經有分割槽,清理所有分割槽 Get-Disk -Number $osddiskid | Get-Partition | Remove-Partition -Confirm:$false 2> $null
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File "%SCRIPTROOT%\Custom\Format_OSD_Disk.ps1"

這樣應該就可以了。

組合使用

根據自己的情況組合使用吧,記得上篇的MoreTheanOneHD麼?

選擇小盤,格式化其他盤,都可以加上那條指令碼,並設定條件執行。

相關文章