<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://sufan.maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://sufan.maytide.net/read.php/1926.htm</link>
<title><![CDATA[HOWTO: 使用 DISM 配合脚本批量删除驱动程序]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Deployment]]></category>
<pubDate>Mon, 21 Jan 2019 02:56:35 +0000</pubDate> 
<guid>https://sufan.maytide.net/read.php/1926.htm</guid> 
<description>
<![CDATA[ 
	<p><img src="http://goxia.maytide.net/attachment.php?fid=49"></p><p><font color="#fd3f0d" size="4"><strong>HOWTO: 使用 DISM 配合脚本批量删除驱动程序</strong></font></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用 DISM 或 Pnputil 我们已经能够实现脱机或在线模式批量安装硬件的驱动程序，那么如何能够实现批量卸载已经集成到映像中的驱动程序呢？！</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 假设我们的映像编制人员为 Surface 设备创建了定制化的系统映像，并集成了 Surface 的设备驱动程序，现在我们希望编制好的映像可以作为通用映像部署在其他计算机上，这时我们就需要清理已经集成在映像内的驱动程序。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要卸载映像内集成的第三方驱动程序，我们首先需要列表出来它们，所以为此我们执行如下命令行。</p><p><div class="code">dism /image:c:\ /get-drivers</div></p><p><a href="http://goxia.maytide.net/ftpup/2018/HOWTO_8F86/get-drivers.png"><img width="634" height="328" title="get-drivers" style="display: inline; background-image: none;" alt="get-drivers" src="http://goxia.maytide.net/ftpup/2018/HOWTO_8F86/get-drivers_thumb.png" border="0"></a></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利用上述的参考命令我们可以检索到当前映像中已经安装的硬件驱动程序，其中“已发布的名称：oem<strong><em>X</em></strong>.inf”是我们需要记录的数据。接下来使用下例命令行就可以从映像中卸载驱动。</p><p><div class="code">dism /image:c:\ /remove-dirver:oem<strong><em>X</em></strong>.inf[code]</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 细心和已经在使用该命令管理的驱动的朋友会注意到，由于映像中第三方驱动可能会很多，有时多大近70个，那么我们就需要一次一次执行上面的卸载驱动命令，将 oem<strong><em>X</em></strong>.inf 从映像中删除，这将是一件令人崩溃的任务。有些朋友可能会利用 Excel 批量转换和生成指令，其实我们完全可以利用批处理命令“<strong><em>For ... Do ...</em></strong>”来实现。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实现逻辑就是利用 DISM 的 Get-Drivers 参数获取驱动列表，并查找其中的唯一特征，例如下图所示我们能看到所有被列出的第三方驱动程序都不是“内置驱动程序”，那么可以用它来作为检索关键词。</p><p>[code]dism /image:c:\ /get-drivers /format:table</div></p><p><a href="http://goxia.maytide.net/ftpup/2018/HOWTO_8F86/get-drivers_table.png"><img width="634" height="473" title="get-drivers_table" style="display: inline; background-image: none;" alt="get-drivers_table" src="http://goxia.maytide.net/ftpup/2018/HOWTO_8F86/get-drivers_table_thumb.png" border="0"></a></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们有了用于检索的关键词，就可以使用“find”来获得准确的驱动列表，可创建变量以生成动态驱动列表，便可以实现动态批量卸载驱动，参考脚本如下：</p><p><div class="code">for /f %%a in ('dism /image:c:\ /get-drivers /format:table ^&#124;find \"&#124;否\"') do (dism /image:c:\ /remove-driver:%%a)</div></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上脚本可以从 <a href="http://goxia.maytide.net" target="_blank">gOxiA</a> 的 Github 获取。<a title="https://github.com/goxia/ITSM/blob/master/remove_driver.bat" href="https://github.com/goxia/ITSM/blob/master/remove_driver.bat">https://github.com/goxia/ITSM/blob/master/remove_driver.bat</a></p>
]]>
</description>
</item>
</channel>
</rss>