前些天试了一下使用MDT制作自动部署的U盘,用着还是很方便的,制作方法已经在之前的博客中介绍过了MDT制作自动部署U盘,之后在测试过程中发现遇到了一些问题,网络部署的环境是没有问题的,但是U盘部署的方式,在选择完只格式化C盘的任务序列之后总是会报错,报错提示unable to determine destination disk,Partition,and/or Drive,报错截图如下:

MDT U盘自动部署报错解决办法_第1张图片


  明明之前制作的U盘是没有问题的,为什么这个就会报错呢?试了几台机器发现都不行。没办法只好来找一下问题的原因了,既然有明确的报错信息了,MDT之所以能实现自动化部署的关键其实就是MDT中有很多的脚本来完成各种不同的任务,既然有报错,那么能抛出这个错误的代码肯定就在这些脚本中,顺着这个思路往下走,在Script这个文件中首先来搜索一下,先来一个直接搜索试试,结果发现没找到任何文件

MDT U盘自动部署报错解决办法_第2张图片


  不过搜索其实也是有技巧的,这次我们在高级选项里把文件内容也勾选上,这样的话搜索时除了会搜索文件名还会去检查这个文件里的内容,这回发现找到了两个脚本里包含这个报错信息

MDT U盘自动部署报错解决办法_第3张图片

  最后排查发现在Ztiutility.vbs这个脚本中就有抛出这个报错的代码,代码内容如下:

  If IsEmpty(GetOSTargetDriveLetterEx) then

   oLogging.CreateEntry "DestinationDisk and Partition did not yield a target Partition.", logTypeInfo

   If bRequired then

    oLogging.ReportFailure "Unable to determine Destination Disk, Partition, and/or Drive. See BDD.LOG for more information.", 5456

   End if 

  脚本截图如下:

MDT U盘自动部署报错解决办法_第4张图片   


  也就是说GetOSTargetDriveLetterEx为空时就会抛出这个报错,那么这个GetOSTargetDriveLetterEx又是什么呢?看字面意思应该是操作系统目标的盘符,我猜想可能是要装在哪个盘,这个会不会跟任务序列有关系呢?毕竟任务序列里也会设置这些属性,我找到了U盘中Deploy文件夹下的Control文件夹,任务序列就藏在这个文件夹下,其实任务序列的本质也就是xml文件,之前设置的rules和bootstrap都在这个文件夹下,1和2也就是任务序列的ID,每个任务序列都会以他的ID为名建立一个文件夹

MDT U盘自动部署报错解决办法_第5张图片

 里边就是两个xml的文件

MDT U盘自动部署报错解决办法_第6张图片

 在ts.xml中我找到了一个叫做DestinationOSDriveLetter的变量,这个变量是空的

MDT U盘自动部署报错解决办法_第7张图片

 把这个变量赋值为C之后再试了一次,果然不报之前的错了,这时我注意到DestinationOSDriveLetter下边还有一个叫做DestinationOSInstallType的变量,这个值为ByVariable,还有一个叫做DestinationOSVariable的变量值为OSDisk,因此我猜测现在的脚本可能是会判断卷标是不是OSDisk,如果是的话就会将系统安装在这个分区下。但是测试的机器C盘的卷标肯定不会是OSDisk,这个会不会是报错的原因呢?

MDT U盘自动部署报错解决办法_第8张图片

  之后我找到之前没问题的任务序列对比了一下,发现两者在这里果然不一样,没问题的任务序列DestinationOSDriveLetter变量值为C,并且DestinationOSInstallType变量值为ByDriveLetter,以下是两者的对比图,其中左边的是有问题的,右边的是没问题的

MDT U盘自动部署报错解决办法_第9张图片

  这样就好办了,我尝试了下将有问题的任务序列中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。


 改之前:

MDT U盘自动部署报错解决办法_第10张图片


 改之后:

MDT U盘自动部署报错解决办法_第11张图片


  改完任务序列之后,重新生成了一遍Media的镜像,这次再制作出来的U盘就没再出现问题了。