HOWTO: 使用 DISM 配合脚本批量删除驱动程序

        利用 DISM 或 Pnputil 我们已经能够实现脱机或在线模式批量安装硬件的驱动程序,那么如何能够实现批量卸载已经集成到映像中的驱动程序呢?!

        假设我们的映像编制人员为 Surface 设备创建了定制化的系统映像,并集成了 Surface 的设备驱动程序,现在我们希望编制好的映像可以作为通用映像部署在其他计算机上,这时我们就需要清理已经集成在映像内的驱动程序。

        要卸载映像内集成的第三方驱动程序,我们首先需要列表出来它们,所以为此我们执行如下命令行。

dism /image:c:\ /get-drivers

get-drivers

        利用上述的参考命令我们可以检索到当前映像中已经安装的硬件驱动程序,其中“已发布的名称:oemX.inf”是我们需要记录的数据。接下来使用下例命令行就可以从映像中卸载驱动。

dism /image:c:\ /remove-dirver:oemX.inf[code]

        细心和已经在使用该命令管理的驱动的朋友会注意到,由于映像中第三方驱动可能会很多,有时多大近70个,那么我们就需要一次一次执行上面的卸载驱动命令,将 oemX.inf 从映像中删除,这将是一件令人崩溃的任务。有些朋友可能会利用 Excel 批量转换和生成指令,其实我们完全可以利用批处理命令“For ... Do ...”来实现。

        实现逻辑就是利用 DISM 的 Get-Drivers 参数获取驱动列表,并查找其中的唯一特征,例如下图所示我们能看到所有被列出的第三方驱动程序都不是“内置驱动程序”,那么可以用它来作为检索关键词。

[code]dism /image:c:\ /get-drivers /format:table

get-drivers_table

        我们有了用于检索的关键词,就可以使用“find”来获得准确的驱动列表,可创建变量以生成动态驱动列表,便可以实现动态批量卸载驱动,参考脚本如下:

for /f %%a in ('dism /image:c:\ /get-drivers /format:table ^|find \"|否\"') do (dism /image:c:\ /remove-driver:%%a)

        以上脚本可以从 gOxiA 的 Github 获取。https://github.com/goxia/ITSM/blob/master/remove_driver.bat

image

HOWTO: 解决 LiteTouch OEM 发生 0xC000014C 引导故障

        通过 LiteTouch OEM 默认任务序列制作好 Media,拿到客户端实施,LiteTouch OEM Media 引导正常,也执行了 LiteTouch OEM 任务序列,正常结束并关机。再次开机后,引导过程中发生 0xC000014C 故障,具体错误可参考下图。

0xc000014c

        该问题通常发生在 UEFI 引导类型的机器上,这是因为 LiteTouch OEM 默认的任务序列中使用的是基于 MBR 类型的分区方案,只有一个 NTFS 格式的分区卷,所以到客户端引导时就会发生故障。

LiteTouchOEM_Default

        解决办法很简单,在现有“Format and Partition Disk”任务上将其改名为“Format and Partition Disk (BIOS)”,然后根据需要重新划分磁盘分区,再在“Options”选项下添加变量:“IsUEFI not equals True”。

FPD_BIOS

        同理再新添加一个磁盘任务序列,命名为“Format and Partition Disk (UEFI)”,定制好分区后,也添加一个变量“IsUEFI equals True”。

FPD_UEFI-1FPD_UEFI-2

        最后重新生成 Media,即可解决 0xC000014C 故障问题,且同时支持 BIOS 和 UEFI 类型的计算机。

image

HOWTO: 解决 LiteTouch OEM 发生 DISM Error 11 故障

        MDT 的 Lite Touch OEM 任务序列用于在计算机硬盘上预加载操作系统映像。通常由计算机原始设备制造商(OEM)使用,但一些企业也有类似场景的需求。本文 gOxiA 将于大家分享的是解决实施 LiteTouch OEM 过程中,可能发生的 DISM Error 11 故障问题。

        按照标准流程创建完毕 LiteTouch OEM,并生成 Media 后,拿到客户端上进行测试,在释放映像的过程中发生故障,导致 LiteTouch OEM 任务序列终止,如下图所示:

Dism_error11

        在 Details 中能看到故障发生在 WIM 释放阶段,尝试手动执行命令提示“Error 11”,指出“试图加载格式不正确的程序”。在网上搜索了 DISM Error 11 的相关信息,并没有多大的帮助。更换了其他版本的 DISM 执行同样发生此错误,只能再重新领会错误信息。

        gOxiA 尝试调用网络共享中的 WIM 执行该命令行,发现并未有问题。说明 MDT 在生成 Media 时出现了异常,但是向导程序并未成功检测到复制发生了错误,最终导致该故障的发生。而 DISM Error 11 给出的错误提示又未能完全表达意思,误导了用户。

        对于 MDT 任务序列的执行过程都是相关命令和资源的调用,如果通过错误提示无法分析故障原因,不妨参考日志手动执行命令行,也许真相就会显露出来。

        补充:该问题最终查明,存储 LiteTouchOEM 的媒介是 连接在这台虚拟机上使用 SCSI 接口的虚拟磁盘,而这个虚拟磁盘又存储在固态硬盘上,所以导致近 9GB 的数据以每秒近 500MB 的速度瞬间写入,随后由于手工断开 SCSI 磁盘,导致缓存未成功写入。:-P

分页: 10/50 第一页 上页 5 6 7 8 9 10 11 12 13 14 下页 最后页 [ 显示模式: 摘要 | 列表 ]