前些天試了一下使用MDT製做自動部署的U盤,用着仍是很方便的,製做方法已經在以前的博客中介紹過了MDT製做自動部署U盤,以後在測試過程當中發現遇到了一些問題,網絡部署的環境是沒有問題的,可是U盤部署的方式,在選擇完只格式化C盤的任務序列以後老是會報錯,報錯提示unable to determine destination disk,Partition,and/or Drive,報錯截圖以下:bootstrap
明明以前製做的U盤是沒有問題的,爲何這個就會報錯呢?試了幾臺機器發現都不行。沒辦法只好來找一下問題的緣由了,既然有明確的報錯信息了,MDT之因此能實現自動化部署的關鍵其實就是MDT中有不少的腳原本完成各類不一樣的任務,既然有報錯,那麼能拋出這個錯誤的代碼確定就在這些腳本中,順着這個思路往下走,在Script這個文件中首先來搜索一下,先來一個直接搜索試試,結果發現沒找到任何文件網絡
不過搜索其實也是有技巧的,此次咱們在高級選項裏把文件內容也勾選上,這樣的話搜索時除了會搜索文件名還會去檢查這個文件裏的內容,這回發現找到了兩個腳本里包含這個報錯信息app
最後排查發如今Ztiutility.vbs這個腳本中就有拋出這個報錯的代碼,代碼內容以下:ide
If IsEmpty(GetOSTargetDriveLetterEx) then測試
oLogging.CreateEntry "DestinationDisk and Partition did not yield a target Partition.", logTypeInfoui
If bRequired thenthis
oLogging.ReportFailure "Unable to determine Destination Disk, Partition, and/or Drive. See BDD.LOG for more information.", 5456spa
End if 操作系統
腳本截圖以下:
orm
也就是說GetOSTargetDriveLetterEx爲空時就會拋出這個報錯,那麼這個GetOSTargetDriveLetterEx又是什麼呢?看字面意思應該是操做系統目標的盤符,我猜測多是要裝在哪一個盤,這個會不會跟任務序列有關係呢?畢竟任務序列裏也會設置這些屬性,我找到了U盤中Deploy文件夾下的Control文件夾,任務序列就藏在這個文件夾下,其實任務序列的本質也就是xml文件,以前設置的rules和bootstrap都在這個文件夾下,1和2也就是任務序列的ID,每一個任務序列都會以他的ID爲名創建一個文件夾
裏邊就是兩個xml的文件
在ts.xml中我找到了一個叫作DestinationOSDriveLetter的變量,這個變量是空的
把這個變量賦值爲C以後再試了一次,果真不報以前的錯了,這時我注意到DestinationOSDriveLetter下邊還有一個叫作DestinationOSInstallType的變量,這個值爲ByVariable,還有一個叫作DestinationOSVariable的變量值爲OSDisk,所以我猜想如今的腳本多是會判斷卷標是否是OSDisk,若是是的話就會將系統安裝在這個分區下。可是測試的機器C盤的卷標確定不會是OSDisk,這個會不會是報錯的緣由呢?
以後我找到以前沒問題的任務序列對比了一下,發現二者在這裏果真不同,沒問題的任務序列DestinationOSDriveLetter變量值爲C,而且DestinationOSInstallType變量值爲ByDriveLetter,如下是二者的對比圖,其中左邊的是有問題的,右邊的是沒問題的
這樣就好辦了,我嘗試了下將有問題的任務序列中DestinationOSInstallType也改成了ByDriveLetter,此次再嘗試了下果真再也不報錯了,看來是找到問題的根源了。這樣的話在製做任務序列時確定就會有這個選項了,在MDT中找了一下,果真被我發現了,這個選項是在Install Operating System中有一個Select the location where you want to apply this operating system,咱們須要將原來的logical drive letter stored in a variable 值爲OSDisk,改成了Specific logical drive letter值爲C。
改以前:
改以後:
改完任務序列以後,從新生成了一遍Media的鏡像,此次再製做出來的U盤就沒再出現問題了。