在本指南中,我将展示如何使用内置工具将新的Windows更新软件包集成到Windows 10或Windows 8.1的脱机安装映像中。您可以将最新的安全修补程序整合到Windows Server 2012 R2 / 2016安装ISO映像中的方法相同。
在此示例中,我将展示将最新的累积安全更新(2018年12月)添加到Windows 10 1803的安装映像中的过程。因此,我们将需要:
- 格式为Windows 10 ISO的安装映像或其in文件;
- 需要从Microsoft更新目录中下载 .MSU格式的更新(如何手动下载msu更新文件)。
重要的是要确保Windows操作系统映像和更新具有相同的位数和版本,否则,在安装更新时将出现错误“ 更新不适用于您的计算机 ”。
在您的计算机上创建以下目录结构:
- C:\ updates \ mnt是将安装Windows安装映像的in文件的文件夹;
- C:\ updates \ msu是一个文件夹,您需要在其中放置Windows版本的MSU更新(在此示例中,我下载了2个Windows 10 1803的安全更新,于2018年12月发布-KB4471331和KB4471324);
C:\ updates \ Win10Image \在此文件夹中,您需要从Windows 10安装映像中复制in文件。在我们的示例中,我们装入并解压缩了原始Windows 10 ISO映像Window的内容。但是,它可以是来自虚拟机,VM模板,WDS映像或存储在另一个OS自动部署软件(例如SCCM)等中的映像的WIM文件。
如果Windows 10 ISO映像仅包含文件c:\ sources \ in,则可以使用DISM实用程序将ESD文件转换为WIM文件:dism /export-image /SourceImageFile:"C:\updates\Win10Image\in" /SourceIndex:4 /DestinationImageFile:C:\updates\Win10Image\win10 /Compress:max /CheckIntegrity
通过以管理员身份在命令提示符处运行以下命令,将Windows 10安装映像(in)挂载到C:\ updates \ mnt文件夹:
dism /mount-wim /wimfile:C:\updates\Win10Image\in /index:1 /mountdir:C:\updates\mnt
提示。如果WIM映像一次包含多个Windows版本,则在此命令中,您需要指定所需OS版本的索引,或依次集成每个映像的更新。您可以使用以下命令获取WIM文件中包含的Windows版本的列表:
DISM /Get-WimInfo /WimFile:C:\updates\Win10\in
在我们的示例中,该映像仅包含一个OS版本- 索引为1的Windows 10 Pro,因此在命令中,我们需要指定in / index:1。
现在,您可以将位于指定目录中的合适的MSU更新集成到Windows 10映像中:
dism /image:C:\updates\mnt /add-package /packagepath:C:\updates\msu
如果系统检测到错误的更新(一个不适合此操作系统版本和位数的更新,或者已经安装了更新),它将被忽略,并且相应的信息将被写入C:\ Windows \ Logs \ DISM \ di。
要通过删除旧的更新文件来减小图像的大小(请参阅有关WinSxS文件夹cleanup的文章),请运行以下命令:
dism /image:C:\updates\mnt /Cleanup-Image /StartComponentCleanup /ResetBase /ScratchDir:C:\Temp
如果您已经拥有装有Windows 10相似版本的计算机,并且已经安装了最新的安全更新,则可以直接从计算机获取所有必需的更新文件。在这种情况下,您无需从Microsoft更新目录中手动下载MSU更新文件。诀窍是Windows将已从Windows Update服务器或WSUS服务器下载的更新的CAB文件保存到C:\ Windows \ SoftwareDistribution \ Download文件夹中。
使用以下命令,您将开始将更新文件集成到已经通过本地网络下载并安装在另一台计算机上的in映像中:
Start /w for /R \\Win10x64AlreadyPatchedPC\C$\Windows\SoftwareDistribution\Download\ %f in (*.cab) do dism /image:C:\updates\mnt /add-package /packagepath:”%f”
在此示例中,Win10x64AlreadPatchedPC是已经安装了必要更新的远程计算机的名称(操作系统版本和位数必须匹配)。当然,应该可以通过网络访问此计算机,并且应该将您的帐户添加到该计算机的本地管理员组中。在打开的窗口中,您可以观看将更新安装到脱机Windows映像的过程。DISM将尝试将在远程计算机上找到的每个CAB文件文件添加到WIM映像中。
如果在将更新集成到Windows映像时遇到错误:“ 错误0xc0000135尝试启动位于C:\ Update \ mount的映像的服务过程时发生错误。有关更多信息,请查看日志文件 “,确保您使用的是最新版本的DISM。例如,您尝试从Windows 8.1修改Windows Server 2016映像。为您的操作系统安装最新的可用版本Windows评估和部署工具包(Windows ADK),并直接从目录中运行DISM C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\DISM。
最后一步是保存更改并卸载Windows 10映像:
dism /unmount-wim /mountdir:C:\updates\mnt /commit
dism /Cleanup-Wim
您只需要将in复制到源目录/虚拟机或重建安装ISO映像,例如,使用oscdimg,UltraISO或Dism ++即可。
如果in文件的大小大于4 GB,则可能会遇到错误“ Windows无法打开所需的文件D:\ sources \ in。在UEFI系统上Windows安装期间,错误代码:0x8007000D” 。在这种情况下,您需要使用以下命令将源in拆分为较小的文件:
dism /split-Image /imagefile:C:\Update\Win10Image\in /swmfile:C:\Update\Win10Image\in /filesize:4096
(请参阅文章如何创建UEFI可引导Windows 7安装USB驱动器和创建可引导Windows Server 2016 USB安装驱动器)。
之后,可以删除原始的in。
DISM还允许您将驱动程序添加到脱机映像。以前,我们考虑过如何在 Windows 10 / 8.1 / Windows Server 2012 R2 / 2016或Windows 7的示例中使用DISM或cmdlet Add-WindowsDriver 将驱动程序集成到Windows安装映像中(将USB3驱动程序添加到Windows 7安装中)。
现在,您可以部署Windows安装映像,并在网络中的计算机上集成最新的安全更新。通过将最新的安全更新定期集成到部署在新计算机上的Windows映像中,可以提高基础结构抵御最新漏洞的安全性,并降低感染新计算机的风险,直到它们从WSUS开始更新为止。