DISM命令(Deployment Image Servicing and Management)是Windows操作系统中的一个工具,它可以对映像文件进行操作和维护。主要用于管理Windows镜像、软件包和驱动程序

 

PixPin_2026-06-05_14-25-01

下载Windows Imaging File Format (WIM) 

 

DISM(Deployment Image Servicing and Management)是Windows操作系统中的一个工具,它可以对映像文件进行操作和维护。主要用于管理Windows镜像、软件包和驱动程序。

dism /?

Deployment Image Servicing and Management tool
Version: 10.0.20348.681


DISM.exe [dism_options] {Imaging_command} [<Imaging_arguments>]
DISM.exe {/Image:<path_to_offline_image> | /Online} [dism_options]
         {servicing_command} [<servicing_arguments>]

DESCRIPTION:

  DISM enumerates, installs, uninstalls, configures, and updates features
  and packages in Windows images. The commands that are available depend
  on the image being serviced and whether the image is offline or running.


FFU COMMANDS:

  /Capture-Ffu            - Captures a physical disk image into a new FFU file.
  /Apply-Ffu              - Applies an .ffu image.
  /Split-Ffu              - Splits an existing .ffu file into multiple read-only
                            split FFU files.
  /Optimize-Ffu           - Optimizes a FFU file so that it can be applied to storage
                            of a different size.

WIM COMMANDS:

  /Apply-CustomDataImage  - Dehydrates files contained in the custom data image.
  /Capture-CustomImage    - Captures customizations into a delta WIM file on a
                            WIMBoot system. Captured directories include all
                            subfolders and data.
  /Get-WIMBootEntry       - Displays WIMBoot configuration entries for the
                            specified disk volume.
  /Update-WIMBootEntry    - Updates WIMBoot configuration entry for the
                            specified disk volume.
  /List-Image             - Displays a list of the files and folders in a
                            specified image.
  /Delete-Image           - Deletes the specified volume image from a WIM file
                            that has multiple volume images.
  /Export-Image           - Exports a copy of the specified image to another
                            file.
  /Append-Image           - Adds another image to a WIM file.
  /Capture-Image          - Captures an image of a drive into a new WIM file.
                            Captured directories include all subfolders and
                            data.
  /Get-MountedWimInfo     - Displays information about mounted WIM images.
  /Get-WimInfo            - Displays information about images in a WIM file.
  /Commit-Wim             - Saves changes to a mounted WIM image.
  /Unmount-Wim            - Unmounts a mounted WIM image.
  /Mount-Wim              - Mounts an image from a WIM file.
  /Remount-Wim            - Recovers an orphaned WIM mount directory.
  /Cleanup-Wim            - Deletes resources associated with mounted WIM
                            images that are corrupted.

GENERIC IMAGING COMMANDS:

  /Split-Image            - Splits an existing .wim file into multiple
                            read-only split WIM (SWM) files.
  /Apply-Image            - Applies an image.
  /Get-MountedImageInfo   - Displays information about mounted WIM and VHD
                            images.
  /Get-ImageInfo          - Displays information about images in a WIM, a VHD
                            or a FFU file.
  /Commit-Image           - Saves changes to a mounted WIM or VHD image.
  /Unmount-Image          - Unmounts a mounted WIM or VHD image.
  /Mount-Image            - Mounts an image from a WIM or VHD file.
  /Remount-Image          - Recovers an orphaned image mount directory.
  /Cleanup-Mountpoints    - Deletes resources associated with corrupted
                            mounted images.

IMAGE SPECIFICATIONS:

  /Online                 - Targets the running operating system.
  /Image                  - Specifies the path to the root directory of an
                            offline Windows image.

DISM OPTIONS:

  /English                - Displays command line output in English.
  /Format                 - Specifies the report output format.
  /WinDir                 - Specifies the path to the Windows directory.
  /SysDriveDir            - Specifies the path to the system-loader file named
                            BootMgr.
  /LogPath                - Specifies the logfile path.
  /LogLevel               - Specifies the output level shown in the log (1-4).
  /NoRestart              - Suppresses automatic reboots and reboot prompts.
  /Quiet                  - Suppresses all output except for error messages.
  /ScratchDir             - Specifies the path to a scratch directory.

For more information about these DISM options and their arguments, specify an
option immediately before /?.

  Examples:
    DISM.exe /Mount-Wim /?
    DISM.exe /ScratchDir /?
    DISM.exe /Image:C:\test\offline /?
    DISM.exe /Online /?

dism /?

部署映像服务和管理工具
版本:10.0.20348.681

DISM.exe [dism选项] {映像命令} [<映像参数>]
DISM.exe {/Image:<离线映像路径> | /Online} [dism选项]
{维护命令} [<维护参数>]

描述:

DISM 用于列举、安装、卸载、配置和更新 Windows 映像中的功能和软件包。可用的命令取决于正在维护的映像以及映像是离线还是在线的。

FFU 命令:

/Capture-Ffu            - 将物理磁盘映像捕获到新的 FFU 文件中。
/Apply-Ffu              - 应用 .ffu 映像。
/Split-Ffu              - 将现有的 .ffu 文件拆分为多个只读分割的 FFU 文件。
/Optimize-Ffu           - 优化 FFU 文件,以便将其应用于不同大小的存储。

WIM 命令:

/Apply-CustomDataImage  - 将包含在自定义数据映像中的文件去水化。
/Capture-CustomImage    - 在 WIMBoot 系统中将定制内容捕获到增量 WIM 文件中。捕获的目录包括所有子文件夹和数据。
/Get-WIMBootEntry       - 显示指定磁盘卷的 WIMBoot 配置条目。
/Update-WIMBootEntry    - 更新指定磁盘卷的 WIMBoot 配置条目。
/List-Image             - 显示指定映像中的文件和文件夹列表。
/Delete-Image           - 从具有多个卷映像的 WIM 文件中删除指定的卷映像。
/Export-Image           - 将指定映像的副本导出到另一个文件。
/Append-Image           - 将另一个映像添加到 WIM 文件中。
/Capture-Image          - 将驱动器的映像捕获到新的 WIM 文件中。捕获的目录包括所有子文件夹和数据。
/Get-MountedWimInfo     - 显示有关已加载的 WIM 映像的信息。
/Get-WimInfo            - 显示 WIM 文件中映像的信息。
/Commit-Wim             - 将对已加载的 WIM 映像所做的更改保存。
/Unmount-Wim            - 卸载已加载的 WIM 映像。
/Mount-Wim              - 从 WIM 文件中加载映像。
/Remount-Wim            - 恢复孤立的 WIM 挂载目录。
/Cleanup-Wim            - 删除与已加载的 WIM 映像相关的资源,这些资源已损坏。

通用映像命令:

/Split-Image            - 将现有的 .wim 文件拆分为多个只读的分割 WIM (SWM) 文件。
/Apply-Image            - 应用映像。
/Get-MountedImageInfo   - 显示已加载的 WIM 和 VHD 映像的信息。
/Get-ImageInfo          - 显示 WIM、VHD 或 FFU 文件中的映像信息。
/Commit-Image           - 保存对已加载的 WIM 或 VHD 映像所做的更改。
/Unmount-Image          - 卸载已加载的 WIM 或 VHD 映像。
/Mount-Image            - 从 WIM 或 VHD 文件中加载映像。
/Remount-Image          - 恢复孤立的映像挂载目录。
/Cleanup-Mountpoints    - 删除与损坏的已加载映像相关的资源。

映像规范:

/Online                 - 针对正在运行的操作系统。
/Image                  - 指定离线 Windows 映像的根目录路径。

DISM 选项:

/English                - 以英语显示命令行输出。
/Format                 - 指定报告输出格式。
/WinDir                 - 指定 Windows 目录的路径。
/SysDriveDir            - 指定系统引导加载程序文件 BootMgr 的路径。
/LogPath                - 指定日志文件路径。
/LogLevel               - 指定日志中显示的输出级别(1-4)。
/NoRestart              - 抑制自动重新启动和重新启动提示。
/Quiet                  - 抑制除错误消息外的所有输出。
/ScratchDir             - 指定临时目录的路径。

有关这些 DISM 选项及其参数的更多信息,请在 /? 之前指定一个选项。

示例:
DISM.exe /Mount-Wim /?
DISM.exe /ScratchDir /?
DISM.exe /Image:C:\test\offline /?
DISM.exe /Online /?

DISM.exe /Online /?

Deployment Image Servicing and Management tool
Version: 10.0.20348.681

Image Version: 10.0.20348.2340


The following commands may be used to service the image:

OS UNINSTALL SERVICING COMMANDS:

  /Set-OSUninstallWindow  - Sets the OS Uninstall Window.
  /Get-OSUninstallWindow  - Gets the OS Uninstall Window.
  /Remove-OSUninstall     - Remove the OS Uninstall.
  /Initiate-OSUninstall   - Initiates the OS Uninstall

APPX 服务命令:

  /Get-NonRemovableAppPolicy - 列出配置为不能通过
                            企业策略删除的程序包系列。
  /Set-NonRemovableAppPolicy - 为指定的程序包系列设置
                            企业的不可删除策略。
  /Optimize-ProvisionedAppxPackages - 通过跨 appx 数据包硬链接相同文件
优化预配的 appx 占用空间。
  /Set-ProvisionedAppxDataFile - 将自定义数据放入指定的应用包
                                (.appx 或 .appxbundle)。
                                指定的应用程序包必须已在映像中。
  /Remove-ProvisionedAppxPackage - 从映像中删除应用包(.appx 或 .appxbundle)。
                                创建新的用户帐户时,将
                            不安装这些应用包。
  /Add-ProvisionedAppxPackage - 将应用包(.appx 或 .appxbundle)添加到映像
                                并将其设置为对每个新用户进行安装。
  /Get-ProvisionedAppxPackages - 显示有关映像中设置为对每个新用户进行
                                安装的应用包
                                (.appx 或 .appxbundle)的信息。

程序包服务命令:

  /Add-Package            - 向映像中添加程序包。
  /Remove-Package         - 从映像中删除程序包。
  /Enable-Feature         - 启用映像中的特定功能。
  /Disable-Feature        - 禁用映像中的特定功能。
  /Get-Packages           - 显示有关映像中所有程序包的信息。
  /Get-PackageInfo        - 显示有关特定程序包的信息。
  /Get-Features           - 显示有关程序包中所有功能的信息。
  /Get-FeatureInfo        - 显示有关特定功能的信息。
  /Cleanup-Image          - 对映像执行清理和恢复
                            操作。
  /Export-Source          - 将一组功能导出到新存储库中。
  /Add-Capability         - 将一个或多个功能添加到图像中。
  /Remove-Capability      - 从一个映像中删除功能。
  /Get-Capabilities       - 获取映像中的功能。
  /Get-CapabilityInfo     - 获取映像中功能的信息。
  /Get-ReservedStorageState - 获取保留存储空间的当前状态。
  /Set-ReservedStorageState - 设置保留存储空间的当前状态。

操作系统常规命令:

  /Optimize-Image         - 对脱机映像执行指定的
                            配置。

驱动程序服务命令:

  /Remove-Driver          - 从脱机映像中删除驱动程序包。
  /Add-Driver             - 向脱机映像中添加驱动程序包。
  /Get-DriverInfo         - 显示有关脱机映像中或正在运行的操作系统中的
                            特定驱动程序的信息。
  /Get-Drivers            - 显示有关脱机映像中或正在运行的操作系统中
                            的所有驱动程序的信息。
  /Export-Driver          - 从脱机映像或正在运行的操作系统
                            导出所有第三方驱动程序包。

应用程序服务命令:

  /Check-AppPatch         - 显示有关 MSP 修补程序是否适用于安装的映像的信息。
  /Get-AppPatchInfo       - 显示有关安装的 MSP 修补程序的信息。
  /Get-AppPatches         - 显示有关应用于所有安装的应用程序的所有
                            MSP 修补程序的信息。
  /Get-AppInfo            - 显示有关特定安装的 MSI 应用程序的信息。
  /Get-Apps               - 显示有关安装的所有 MSI 应用程序的信息。

默认关联命令:

  /Remove-DefaultAppAssociations - 删除 Windows 映像中的默认应用程序关联。
  /Import-DefaultAppAssociations - 向 Windows 映像导入一组
                            默认应用程序关联。
  /Get-DefaultAppAssociations - 显示 Windows 映像中默认应用程序关联的列表。
  /Export-DefaultAppAssociations - 从运行的操作系统导出
                                    默认的应用程序关联。

国际服务命令:

  /Set-SysUILang          - 设置安装的脱机映像中使用的
                            系统 UI 语言。
  /Set-LayeredDriver      - 设置键盘分层驱动程序。
  /Set-UILang             - 设置安装的脱机映像中使用的默认系统用户界面语言。
  /Set-UILangFallback     - 设置安装的脱机映像中系统用户界面的回退默认语言。
  /Set-UserLocale         - 设置安装的脱机映像中的用户区域设置。
  /Set-SysLocale          - 设置安装的脱机映像中的非 Unicode 程序的语言(也
                            称为系统区域设置)和字体设置。
  /Set-InputLocale        - 设置要在安装的脱机映像中使用的输入区域设置和
                            键盘布局。
  /Set-TimeZone           - 设置安装的脱机映像中的默认时区。
  /Set-AllIntl            - 设置安装的脱机映像中的所有国际设置。
  /Set-SKUIntlDefaults    - 将安装的脱机映像中的指定 SKU 语言的所有国际
                            设置都设置为默认值。
  /Gen-LangIni            - 生成新的 lang.ini 文件。
  /Set-SetupUILang        - 定义安装程序将使用的默认语言。
  /Get-Intl               - 显示有关国际设置和语言的信息。

无人参与服务命令:

  /Apply-Unattend         - 将无人参与文件应用于映像。

EDGE 服务命令:

  /Add-Edge               - 将 Microsoft Edge 添加到映像。

预配程序包服务命令:

  /Get-ProvisioningPackageInfo - 获取预配程序包的信息。
  /Add-ProvisioningPackage - 添加预配程序包。

WINDOWS 版本服务命令:

  /Set-ProductKey         - 设置脱机映像的产品密钥。
  /Get-TargetEditions     - 显示可以将映像升级到的
                            Windows 版本列表。
  /Get-CurrentEdition     - 显示当前映像的版本。
  /Set-Edition            - 将映像升级到较高的版本。

For more information about these servicing commands and their arguments,
specify a command immediately before /?.

     Examples:
         DISM.exe /Image:C:\test\offline /Apply-Unattend /?
         DISM.exe /Image:C:\test\offline /Get-Features /?
         DISM.exe /Online /Get-Drivers /?

DISM.exe /Online /?

Deployment Image Servicing and Management tool
Version: 10.0.20348.681

Image Version: 10.0.20348.2340


The following commands may be used to service the image:

OS UNINSTALL SERVICING COMMANDS:

  /Set-OSUninstallWindow  - Sets the OS Uninstall Window.
  /Get-OSUninstallWindow  - Gets the OS Uninstall Window.
  /Remove-OSUninstall     - Remove the OS Uninstall.
  /Initiate-OSUninstall   - Initiates the OS Uninstall

APPX 服务命令:

  /Get-NonRemovableAppPolicy - 列出配置为不能通过
                            企业策略删除的程序包系列。
  /Set-NonRemovableAppPolicy - 为指定的程序包系列设置
                            企业的不可删除策略。
  /Optimize-ProvisionedAppxPackages - 通过跨 appx 数据包硬链接相同文件
优化预配的 appx 占用空间。
  /Set-ProvisionedAppxDataFile - 将自定义数据放入指定的应用包
                                (.appx 或 .appxbundle)。
                                指定的应用程序包必须已在映像中。
  /Remove-ProvisionedAppxPackage - 从映像中删除应用包(.appx 或 .appxbundle)。
                                创建新的用户帐户时,将
                            不安装这些应用包。
  /Add-ProvisionedAppxPackage - 将应用包(.appx 或 .appxbundle)添加到映像
                                并将其设置为对每个新用户进行安装。
  /Get-ProvisionedAppxPackages - 显示有关映像中设置为对每个新用户进行
                                安装的应用包
                                (.appx 或 .appxbundle)的信息。

程序包服务命令:

  /Add-Package            - 向映像中添加程序包。
  /Remove-Package         - 从映像中删除程序包。
  /Enable-Feature         - 启用映像中的特定功能。
  /Disable-Feature        - 禁用映像中的特定功能。
  /Get-Packages           - 显示有关映像中所有程序包的信息。
  /Get-PackageInfo        - 显示有关特定程序包的信息。
  /Get-Features           - 显示有关程序包中所有功能的信息。
  /Get-FeatureInfo        - 显示有关特定功能的信息。
  /Cleanup-Image          - 对映像执行清理和恢复
                            操作。
  /Export-Source          - 将一组功能导出到新存储库中。
  /Add-Capability         - 将一个或多个功能添加到图像中。
  /Remove-Capability      - 从一个映像中删除功能。
  /Get-Capabilities       - 获取映像中的功能。
  /Get-CapabilityInfo     - 获取映像中功能的信息。
  /Get-ReservedStorageState - 获取保留存储空间的当前状态。
  /Set-ReservedStorageState - 设置保留存储空间的当前状态。

操作系统常规命令:

  /Optimize-Image         - 对脱机映像执行指定的
                            配置。

驱动程序服务命令:

  /Remove-Driver          - 从脱机映像中删除驱动程序包。
  /Add-Driver             - 向脱机映像中添加驱动程序包。
  /Get-DriverInfo         - 显示有关脱机映像中或正在运行的操作系统中的
                            特定驱动程序的信息。
  /Get-Drivers            - 显示有关脱机映像中或正在运行的操作系统中
                            的所有驱动程序的信息。
  /Export-Driver          - 从脱机映像或正在运行的操作系统
                            导出所有第三方驱动程序包。

应用程序服务命令:

  /Check-AppPatch         - 显示有关 MSP 修补程序是否适用于安装的映像的信息。
  /Get-AppPatchInfo       - 显示有关安装的 MSP 修补程序的信息。
  /Get-AppPatches         - 显示有关应用于所有安装的应用程序的所有
                            MSP 修补程序的信息。
  /Get-AppInfo            - 显示有关特定安装的 MSI 应用程序的信息。
  /Get-Apps               - 显示有关安装的所有 MSI 应用程序的信息。

默认关联命令:

  /Remove-DefaultAppAssociations - 删除 Windows 映像中的默认应用程序关联。
  /Import-DefaultAppAssociations - 向 Windows 映像导入一组
                            默认应用程序关联。
  /Get-DefaultAppAssociations - 显示 Windows 映像中默认应用程序关联的列表。
  /Export-DefaultAppAssociations - 从运行的操作系统导出
                                    默认的应用程序关联。

国际服务命令:

  /Set-SysUILang          - 设置安装的脱机映像中使用的
                            系统 UI 语言。
  /Set-LayeredDriver      - 设置键盘分层驱动程序。
  /Set-UILang             - 设置安装的脱机映像中使用的默认系统用户界面语言。
  /Set-UILangFallback     - 设置安装的脱机映像中系统用户界面的回退默认语言。
  /Set-UserLocale         - 设置安装的脱机映像中的用户区域设置。
  /Set-SysLocale          - 设置安装的脱机映像中的非 Unicode 程序的语言(也
                            称为系统区域设置)和字体设置。
  /Set-InputLocale        - 设置要在安装的脱机映像中使用的输入区域设置和
                            键盘布局。
  /Set-TimeZone           - 设置安装的脱机映像中的默认时区。
  /Set-AllIntl            - 设置安装的脱机映像中的所有国际设置。
  /Set-SKUIntlDefaults    - 将安装的脱机映像中的指定 SKU 语言的所有国际
                            设置都设置为默认值。
  /Gen-LangIni            - 生成新的 lang.ini 文件。
  /Set-SetupUILang        - 定义安装程序将使用的默认语言。
  /Get-Intl               - 显示有关国际设置和语言的信息。

无人参与服务命令:

  /Apply-Unattend         - 将无人参与文件应用于映像。

EDGE 服务命令:

  /Add-Edge               - 将 Microsoft Edge 添加到映像。

预配程序包服务命令:

  /Get-ProvisioningPackageInfo - 获取预配程序包的信息。
  /Add-ProvisioningPackage - 添加预配程序包。

WINDOWS 版本服务命令:

  /Set-ProductKey         - 设置脱机映像的产品密钥。
  /Get-TargetEditions     - 显示可以将映像升级到的
                            Windows 版本列表。
  /Get-CurrentEdition     - 显示当前映像的版本。
  /Set-Edition            - 将映像升级到较高的版本。

For more information about these servicing commands and their arguments,
specify a command immediately before /?.

     Examples:
         DISM.exe /Image:C:\test\offline /Apply-Unattend /?
         DISM.exe /Image:C:\test\offline /Get-Features /?
         DISM.exe /Online /Get-Drivers /?

 

C:\Users\Administrator>DISM.exe /Online /Get-Drivers /?

Deployment Image Servicing and Management tool
Version: 10.0.20348.681

Image Version: 10.0.20348.2340


/Get-Drivers [/Format:<output_format>] [/all]

  显示有关映像中驱动程序的信息。使用 /Format 选项为输出
  指定表或列表格式。如果 /Format 未指定,
  则输出的格式为列表。默认情况下,只显示全新驱动程序。
  使用 /all 开关可显示映像中所有驱动程序。

    示例:
      DISM.exe /Image:C:\test\offline /Get-Drivers
      DISM.exe /Image:C:\test\offline /Get-Drivers /all
      DISM.exe /Image:C:\test\offline /Get-Drivers /Format:Table

 

DISM.exe /Mount-Wim /?
Deployment Image Servicing and Management tool
Version: 10.0.20348.681

/Mount-Wim /WimFile:<path_to_WIM_file>
{/Index:<image_index> | /Name:<image_name>}
/MountDir:<target_mount_directory> [/ReadOnly] [/EA]

将 WIM 文件挂载到指定目录,以便进行维护。
使用 /ReadOnly 将挂载的映像设置为只读权限。
使用 /EA 进行带扩展属性的挂载。

示例:
  DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1
    /MountDir:C:\test\offline

  DISM.exe /Mount-Wim /WimFile:C:\test\images\myimage.wim /index:1
    /MountDir:C:\test\offline /ReadOnly

dism /online /Apply-Unattend /?

Deployment Image Servicing and Management tool
Version: 10.0.20348.681

Image Version: 10.0.20348.2340


/Apply-Unattend:<path_to_unattend.xml>

  将 unattend.xml 文件应用于脱机映像或正在运行的操作系统。

    示例:
      DISM.exe /Image:C:\test\offline /Apply-Unattend:C:\unattend.xml
      DISM.exe /Online /Apply-Unattend:C:\unattend.xml

下面是DISM命令的一些常见用法:

  1. 检查映像状态:
Copy Code
dism /Online /Cleanup-Image /CheckHealth
  1. 扫描映像并执行修复操作:
Copy Code
dism /Online /Cleanup-Image /ScanHealth
dism /Online /Cleanup-Image /RestoreHealth
  1. 卸载未使用的驱动程序:
Copy Code
dism /Online /Cleanup-Image /StartComponentCleanup
  1. 启用或禁用Windows功能:
Copy Code
dism /Online /Enable-Feature /FeatureName:Feature1,Feature2,...
dism /Online /Disable-Feature /FeatureName:Feature1,Feature2,...
  1. 添加或删除Windows更新:
Copy Code
dism /Online /Add-Package /PackagePath:C:\PackageFolder\Package1.cab
dism /Online /Remove-Package /PackagePath:C:\PackageFolder\Package1.cab
  1. 指定映像路径:
Copy Code
dism /Mount-Image /ImageFile:C:\test\image.wim /Index:1 /MountDir:C:\test\offline
  1. 取消挂载映像:
Copy Code
dism /Unmount-Image /MountDir:C:\test\offline /Discard

这些都是DISM命令的一些常见用法,但别忘了在使用前要先了解和确认相应的参数和语法。

  1. 在映像中添加驱动程序:
Copy Code
dism /Image:C:\test\offline /Add-Driver /Driver:C:\test\driver\driver.inf
  1. 显示或更改Windows产品密钥:
Copy Code
dism /Online /Get-CurrentEdition
dism /Online /Get-TargetEditions
dism /Online /Set-Edition:ServerStandard /ProductKey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
  1. 导出和导入映像:
Copy Code
dism /Export-Image /SourceImageFile:C:\test\image.wim /SourceIndex:1 /DestinationImageFile:C:\test\newimage.wim
dism /Import-Image /SourceImageFile:C:\test\newimage.wim /DestinationImageFile:C:\test\image.wim

总之,通过DISM命令,管理员可以在Windows操作系统中执行各种任务,如修复映像、安装软件包、扩展映像等。因此,熟悉并掌握DISM命令的使用方法是管理Windows系统的一个必要技能。

  1. 检查、清理和优化系统映像:
Copy Code
dism /Online /Cleanup-Image /CheckHealth
dism /Online /Cleanup-Image /ScanHealth
dism /Online /Cleanup-Image /RestoreHealth
dism /Online /Cleanup-Image /StartComponentCleanup
dism /Online /Cleanup-Image /SPSuperseded
  1. 查看和设置映像信息:
Copy Code
dism /Get-WimInfo /WimFile:C:\test\image.wim
dism /Get-ImageInfo /ImageFile:C:\test\offline\Windows\System32\WinSxS\wow64_microsoft-windows-wow64_31bf3856ad364e35_10.0.17134.1_none_c3d63cffc5c3a28d\wow64_microsoft-windows-wow64_31bf3856ad364e35_10.0.17134.1_none_c3d63cffc5c3a28d.manifest
dism /Set-Edition:ServerDataCenter /ProductKey:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx /AcceptEula
  1. 禁用或启用Windows镜像更新:
Copy Code
dism /Online /Disable-Feature /FeatureName:MicrosoftWindowsPowerShellV2 /NoRestart
dism /Online /Enable-Feature /FeatureName:MicrosoftWindowsPowerShellV2 /All /Source:c:\test\features /LimitAccess
  1. 分发清单文件(只能在Windows PE中使用):
Copy Code
dism /Image:C:\test\WinPE\mount /Add-Package /PackagePath:C:\test\drivers\driver1.inf /PackagePath:C:\test\drivers\driver2.inf
dism /Image:C:\test\WinPE\mount /Add-ProvisionedAppxPackage /PackagePath:C:\test\app1.appx /PackagePath:C:\test\app2.appx

以上就是一些常见的DISM命令用法,可以帮助管理员更好地维护和管理Windows映像文件。但每个命令都有很多参数和选项,使用前需查看相应的文档或帮助文本以了解其详细信息。

  1. 在映像中添加或删除语言包:
Copy Code
dism /Online /Add-Package /PackagePath:C:\test\lp.cab
dism /Online /Remove-Package /PackageName:Microsoft-Windows-Client-LanguagePack-Package~_~en-US~_~0.0.1.0
  1. 更改映像中Windows组件的状态:
Copy Code
dism /Online /Disable-Feature /FeatureName:IE-Optional-amd64
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs
  1. 恢复映像的基本文件系统和目录结构:
Copy Code
dism /Apply-Image /ImageFile:C:\test\image.wim /Index:1 /ApplyDir:C:\test\mounted_image /CheckIntegrity
  1. 安装或卸载Windows更新程序:
Copy Code
dism /Online /Add-Package /PackagePath:C:\test\updates\update1.msu
dism /Online /Remove-Package /PackageName:Package_for_KB123456~31bf3856ad364e35~amd64~~10.0.1.2
  1. 更新、替换或还原匹配的Windows组件:
Copy Code
dism /Online /Cleanup-Image /RestoreHealth /Source:D:\sources\install.wim
dism /Online /Replace-Image /ImageFile:C:\test\image1.wim /Index:1 /ReplacementImageFile:C:\test\image2.wim /CheckIntegrity
dism /Online /Restore-Health /Source:D:\sources\sxs /LimitAccess
  1. 设置Windows PE的引导环境:
Copy Code
dism /Set-Bootable-USB:ON /ISOName:"WinPE" /ImageFile:C:\test\winpe.wim /USBDrive:F:

总之,DISM命令为Windows管理员提供了许多实用的功能,包括映像维护、组件安装、语言包管理、更新程序和驱动程序安装等。但在使用之前,请务必仔细阅读相关文档和帮助信息。

  1. 配置和设置Windows PE的网络连接:
Copy Code
dism /Add-NetworkDriver /Driver:C:\test\drivers\net1.inf /Recurse
dism /Set-ProxyServer:proxy.example.com:8080 /ProxyUserName:username /ProxyPassword:password
dism /Apply-Unattend /Image:C:\test\winpe.wim /unattend:C:\test\unattend.xml
  1. 设置映像的默认用户配置:
Copy Code
dism /Online /Set-UserDefaultLocation:C:\Users\Default\AppData\Local\Microsoft\Windows\WinX\Group2
dism /Online /Set-UserLocale:fr-FR
  1. 检查、修复和压缩映像文件系统:
Copy Code
dism /Online /Check-FileSignature /FilePath:C:\Windows\System32\notepad.exe
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase
dism /Online /Export-Image /SourceImageFile:C:\test\image.wim /SourceIndex:1 /DestinationImageFile:C:\test\exported_image.wim /Compress:max
  1. 在映像中配置Windows Defender:
Copy Code
dism /Online /Enable-Feature /FeatureName:Microsoft-Windows-Defender /All /NoRestart
dism /Online /Disable-Feature /FeatureName:Microsoft-Windows-Defender /NoRestart
dism /Online /Configure-Defender /Scan:Moderate /SignatureUpdateInterval:1 /OnAccessProtection:High /RealtimeProtection:Disable
  1. 处理系统文件:
Copy Code
dism /Online /Cleanup-Image /RestoreHealth /Source:d:\sources\install.wim /LimitAccess
sfc /scannow

这些DISM命令可以帮助管理员完成各种任务,包括网络设置、用户配置、文件系统操作、安全和防病毒等。管理员可以根据需要选择适当的命令和选项来优化和管理Windows映像文件。

  1. 显示映像的信息:
Copy Code
dism /Get-WimInfo /WimFile:D:\sources\install.wim
  1. 配置网络驱动程序:
Copy Code
dism /Add-Driver /Image:C:\test\mount /Driver:C:\test\drivers\net1.inf
dism /Get-DriverInfo /Image:C:\test\mount
  1. 为Windows PE添加驱动程序:
Copy Code
dism /Add-Driver /Image:C:\test\winpe.wim /Driver:C:\test\drivers\net1.inf /ForceUnsigned
  1. 单独获取驱动程序信息:
Copy Code
dism /Get-DriverInfo /Driver:C:\test\drivers\net1.inf
  1. 在映像中添加或删除软件包:
Copy Code
dism /Online /Add-Package /PackagePath:C:\test\updates\update1.msu
dism /Online /Remove-Package /PackageName:Package_for_KB123456~31bf3856ad364e35~amd64~~10.0.1.2

以上是一些常用的DISM命令,可以帮助管理员管理Windows映像文件、驱动程序、安装软件包等。这些命令使用方便,但需要管理员具备一定的技术知识和经验,才能避免出错并保证系统的稳定性和安全性。

  1. 使用DISM设置映像的默认语言和时区:
Copy Code
dism /Online /Set-TimeZone:"Pacific Standard Time"
dism /Online /Set-UILang:fr-FR
  1. 向映像中添加或删除驱动程序:
Copy Code
dism /Image:C:\test\mount /Add-Driver /Driver:C:\test\drivers\net1.inf
dism /Image:C:\test\mount /Remove-Driver /Driver:oem0.inf /ForceDeletion
  1. 为Windows PE添加自定义组件:
Copy Code
dism /Add-ProvisionedAppxPackage /PackagePath:C:\test\appx1.appx /SkipLicense
dism /Add-Package /PackagePath:C:\test\lp.cab /IgnoreCheck
  1. 在映像中清理不需要的系统文件:
Copy Code
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /AnalyzeComponentStore
  1. DISM还支持压缩映像文件系统以减少文件大小。这可以通过以下命令完成:
Copy Code
Dism /Export-Image /SourceImageFile:install.wim /SourceIndex:1 /DestinationImageFile:new_install.wim /Compress:max

以上是一些常用的DISM命令,可以帮助管理员更好地管理Windows映像、驱动程序、软件包等,增强系统的安全性和可靠性。在使用这些命令时,请务必仔细查看命令选项和文档,以避免出现问题。

  1. DISM还可以用于修复Windows映像文件中的损坏和错误。以下是一些常用的修复命令:
Copy Code
dism /Online /Cleanup-Image /CheckHealth
dism /Online /Cleanup-Image /RestoreHealth /source:WIM:F:\sources\install.wim:1 /limitaccess
  1. 检查和设置驱动程序自动安装策略:
Copy Code
dism /Online /Get-DriverFeatures
dism /Online /Set-DriverFeatures /FeatureName:"WindowsUpdate" /FeatureName:"AllowRemoteRPC"
  1. 使用DISM禁用或启用Windows功能:
Copy Code
dism /Online /Disable-Feature /FeatureName:Microsoft-Hyper-V-All
dism /Online /Enable-Feature /FeatureName:SMB1Protocol
  1. 使用DISM升级或降级映像系统版本:
Copy Code
Dism /Online /Set-Edition:Professional /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula
Dism /Online /Set-Edition:Core /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula
  1. DISM还可以用于管理Windows PE映像文件和虚拟磁盘文件(VHD)。以下是一些常用的命令:
Copy Code
dism /Apply-Image /ImageFile:C:\test\winpe.wim /Index:1 /ApplyDir:C:\test\mount
dism /Commit-Wim /MountDir:C:\test\mount
dism /Capture-Image /ImageFile:C:\test\newimage.wim /CaptureDir:C:\test\mount /Name:"New Image"
dism /Mount-VHD /VhdFile:C:\test\test.vhd /Index:1 /MountDir:C:\test\mount

以上是一些常用的DISM命令,可以帮助管理员更好地管理Windows映像、驱动程序、软件包等,增强系统的安全性和可靠性。管理员可以根据需要选择适当的命令和选项来优化和管理Windows映像文件。在使用这些命令时,请务必仔细查看命令选项和文档,以避免出现问题。

  1. 使用DISM修复系统映像中的组件存储:
Copy Code
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /AnalyzeComponentStore
  1. 使用DISM卸载更新程序包:
Copy Code
dism /Online /Remove-Package /PackageName:Package_for_KBxxxxxxx~yyyy.mm.mm~
  1. 使用DISM启用或禁用Windows Defender:
Copy Code
dism /Online /Disable-Feature /FeatureName:Windows-Defender
dism /Online /Enable-Feature /FeatureName:Windows-Defender
  1. 在Windows PE中添加驱动程序:
Copy Code
dism /Add-Driver /Image:C:\winpe\mount /Driver:C:\drivers\driver.inf
  1. 使用DISM禁用或启用特定功能:
Copy Code
dism /Online /Disable-Feature /FeatureName:IIS-WebServerRole
dism /Online /Enable-Feature /FeatureName:SMB1Protocol
  1. 挂载和卸载Windows映像文件:
Copy Code
dism /Mount-Wim /WimFile:C:\test\install.wim /Index:1 /MountDir:C:\test\mount
dism /Unmount-Wim /MountDir:C:\test\mount /Commit
  1. 使用DISM为Windows PE添加自定义驱动程序:
Copy Code
dism /Image:C:\winpe /Add-Driver /Driver:C:\drivers\driver.inf
  1. 使用DISM清理映像文件系统以减少文件大小:
Copy Code
dism /Export-Image /SourceImageFile:install.wim /SourceIndex:1 /DestinationImageFile:new_install.wim /Compress:max

以上是一些常用的DISM命令,可以帮助管理员更好地管理Windows映像、驱动程序、软件包等,增强系统的安全性和可靠性。管理员可以根据需要选择适当的命令和选项来优化和管理Windows映像文件。在使用这些命令时,请务必仔细查看命令选项和文档,以避免出现问题。


DISM 为 .WIM 文件添加自定义软件 - 技术分析报告


1️⃣ 概述

.WIM(Windows Imaging Format)文件是一种用于存储操作系统映像的文件格式。它广泛应用于操作系统部署、恢复和定制。在某些情况下,用户需要为 .WIM 文件添加自定义软件(例如常用工具、企业级应用等),以便在部署操作系统时自动安装这些软件。

目标:通过 DISM(Deployment Imaging Service and Management Tool)为 .WIM 文件添加自定义软件,确保目标系统在部署后预装必要的软件。


2️⃣ 为 .WIM 文件添加自定义软件的背景需求

在操作系统部署中,通常需要将一些常用软件或者企业级应用程序打包到操作系统镜像中。这些软件可以包括:

  • 办公软件(如 Microsoft Office)
  • 安全软件(如防病毒软件)
  • 工具软件(如图像编辑、文件管理工具)
  • 自定义企业应用程序

添加这些软件到 .WIM 文件中,可以避免手动安装,提高部署效率,并确保所有设备在安装操作系统时就具备所需的应用。


3️⃣ 为 .WIM 文件添加自定义软件的流程

步骤 1:挂载 .WIM 文件

首先,需要将 .WIM 文件挂载到一个目录中,以便对其进行修改。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\Images\image.wim /Index:1 /MountDir:C:\Mount

技术要点

  • /Mount-Wim 命令将 .WIM 文件挂载到指定目录。
  • /Index:1 指定要挂载的操作系统映像索引,通常操作系统映像是第一个索引。
  • /MountDir:C:\Mount 用于指定挂载目录。

步骤 2:准备软件包

在将软件添加到 .WIM 文件之前,确保软件包已准备好。以下是常见的软件包格式:

  • MSI 文件:Windows 安装程序包,适用于大部分软件。
  • EXE 文件:可执行安装程序。
  • 脚本(如 PowerShell 脚本):用于自动化安装过程。

步骤 3:使用 DISM 添加软件

DISM 本身不支持直接将应用程序安装到映像中。相反,通常的做法是利用脚本或应用程序安装程序来自动化软件的安装过程。

方法 1:使用 PowerShell 脚本自动安装软件

如果软件是 MSI 或 EXE 格式,可以编写 PowerShell 脚本来自动安装它们。例如:

PowerShell 脚本示例

powershell
Start-Process "C:\Software\setup.msi" -ArgumentList "/quiet /norestart" -NoNewWindow -Wait

该脚本将执行 .msi 文件的静默安装,确保在镜像部署时无需用户交互。

命令示例:将 PowerShell 脚本添加到镜像

powershell
Dism /Image:C:\Mount /Add-Package /PackagePath:C:\Scripts\install-software.ps1

方法 2:使用 DISM 安装软件包

如果使用 .MSU.CAB 更新包,则可以直接使用 DISM 安装它们。

命令示例

powershell
Dism /Image:C:\Mount /Add-Package /PackagePath:C:\Packages\software.cab

技术要点

  • /Add-Package 命令将指定的软件包添加到映像中。
  • /PackagePath 参数指定要安装的软件包路径。

步骤 4:验证软件安装

添加软件后,您可以验证软件是否已成功添加到挂载的 .WIM 文件中。

命令示例

powershell
Dism /Image:C:\Mount /Get-Packages

技术要点

  • /Get-Packages 命令列出挂载映像中所有已安装的软件包,以确认所需软件是否已正确安装。

步骤 5:提交更改并卸载映像

完成软件添加后,提交所有更改并卸载挂载的 .WIM 映像。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Unmount-Wim 命令卸载映像并提交更改。
  • /Commit 参数确保保存所有修改。

步骤 6:创建新镜像

最后,您可以将修改后的镜像转换为新的 .WIM 文件或 .ESD 文件,供后续部署使用。

命令示例

powershell
Dism /Capture-Image /SourceDir:C:\Mount /ImageFile:C:\Images\image_with_software.wim /Compress:max

技术要点

  • /Capture-Image 命令将挂载的映像保存为新的 .WIM 文件。
  • /SourceDir 指定挂载目录,/ImageFile 指定目标 .WIM 文件路径。

4️⃣ 完整的操作流程图

text
准备自定义软件
       ↓
挂载 .WIM 文件
       ↓
准备 PowerShell 脚本 / 软件包
       ↓
通过 PowerShell 脚本 或 DISM 安装软件
       ↓
验证软件安装
       └─ /Get-Packages
       ↓
提交修改并卸载映像
       └─ /Unmount-Wim /Commit
       ↓
创建新的 .WIM 文件
       └─ /Capture-Image /SourceDir:<mountdir> /ImageFile:<newimage.wim>

5️⃣ 技术分析

常见问题与风险

  1. 软件兼容性问题

    • 有些软件可能会与操作系统版本不兼容,或者需要额外的依赖(如 .NET Framework)。需要确保在将软件添加到镜像中时,软件的版本与目标操作系统兼容。
  2. 磁盘空间不足

    • 添加软件到 .WIM 文件时,可能会占用大量磁盘空间,尤其是大型软件包。建议在进行这些操作之前确保系统有足够的磁盘空间。
  3. 安装过程中的交互问题

    • 部署过程中,如果软件的安装程序要求用户交互(如选择安装选项、接受许可协议等),则需要确保使用静默安装模式(如 /quiet 或 /silent 参数)来避免手动干预。
  4. 文件权限问题

    • 安装软件可能涉及更改文件和注册表权限。如果权限不足,可能会导致软件无法正确安装。

优化建议

  1. 使用静默安装

    • 确保使用支持静默安装的安装程序或脚本,这样可以在镜像部署过程中自动完成软件安装,而不需要用户干预。
  2. 虚拟机测试

    • 在正式部署之前,最好在虚拟机中进行测试,确保自定义软件的正确安装和运行。
  3. 创建标准化脚本

    • 如果需要为多个镜像添加相同的软件,可以创建标准化的 PowerShell 脚本或批处理文件,以自动化这一过程,确保一致性和高效性。

通过 DISM 可以为 .WIM 文件添加自定义软件,尽管 DISM 本身不直接支持软件安装,但通过挂载 .WIM 文件并利用脚本或应用程序安装程序,可以在部署镜像时自动完成软件安装。这一过程可以显著提高操作系统部署的效率,减少手动干预。确保在操作时充分验证软件兼容性和安装无误,以保证系统的稳定性和功能性。


DISM 为 Windows PE 添加自定义软件 - 技术分析报告


1️⃣ 概述

Windows PE(Windows Preinstallation Environment)是一种轻量级的操作系统,主要用于安装、部署和修复 Windows 操作系统。它常用于系统维护、故障排除、备份恢复等场景。

目标:通过 DISM(Deployment Imaging Service and Management Tool)为 Windows PE(通常以 .wim 文件形式存在)添加自定义软件,确保 Windows PE 在启动后能够自动执行某些功能,如驱动安装、系统恢复工具等。


2️⃣ 为 Windows PE 添加自定义软件的背景需求

Windows PE 本身是一个非常简洁的操作系统,它包含了操作系统安装和修复的基本功能。但在某些情况下,用户可能需要在 Windows PE 中加入自定义的软件包以扩展其功能,例如:

  • 驱动程序
  • 网络工具(如网络映射工具、浏览器)
  • 系统诊断工具
  • 防病毒工具

这些自定义软件可以帮助技术支持人员在系统恢复或故障排除时更加高效地工作。


3️⃣ 为 Windows PE 添加自定义软件的流程

步骤 1:准备 Windows PE 映像

首先,您需要有一个 Windows PE 映像。可以使用 Windows ADK(Assessment and Deployment Kit)中的工具来创建或修改 Windows PE 镜像。

命令示例

powershell
copype amd64 C:\WinPE_amd64

这将创建一个 Windows PE 镜像在指定路径。

步骤 2:挂载 Windows PE 映像

使用 DISM 工具挂载 Windows PE 的 .wim 文件,以便对其进行修改。挂载后,您可以访问映像中的文件并进行自定义配置。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\WinPE_amd64\media\sources\boot.wim /Index:1 /MountDir:C:\Mount

技术要点

  • /Mount-Wim 命令将指定的 .wim 文件挂载到目标目录。
  • /Index:1 指定挂载映像的索引(通常 Windows PE 是第一个映像)。

步骤 3:准备自定义软件和工具

将您需要添加到 Windows PE 的软件准备好。以下是几种常见的软件类型:

  • 驱动程序:例如网络适配器驱动、存储控制器驱动等。
  • 脚本或工具:例如 Windows 故障排除工具、系统诊断工具。
  • 软件包:例如使用 .msi 或 .exe 文件的安装程序。

确保您准备的工具支持在 Windows PE 环境中运行。

步骤 4:使用 DISM 添加自定义软件

DISM 允许您将驱动程序和软件包添加到 Windows PE 镜像中。具体操作如下:

方法 1:添加驱动程序

如果需要为 Windows PE 添加驱动程序,可以使用 Add-Driver 命令:

命令示例

powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\NetworkDriver.inf

这将把指定的驱动程序添加到挂载的 Windows PE 镜像中。

方法 2:添加软件包

对于应用程序或其他软件包,您可以使用 Add-Package 命令来安装 .cab.msu 格式的软件包。

命令示例

powershell
Dism /Image:C:\Mount /Add-Package /PackagePath:C:\Packages\MyTool.cab

技术要点

  • /Add-Package 命令将指定的包(例如驱动程序包或其他软件)添加到镜像中。
  • /PackagePath 指定要添加的包的路径。

方法 3:使用 PowerShell 脚本安装软件

如果您有自定义的 PowerShell 脚本或 EXE/MSI 安装程序,可以在 Windows PE 中运行它们。例如,您可以通过挂载后在 PE 环境中执行 PowerShell 脚本来自动安装应用程序。

命令示例

powershell
Invoke-Command -ScriptBlock { Start-Process "C:\Software\setup.msi" -ArgumentList "/quiet /norestart" -NoNewWindow -Wait }

步骤 5:验证软件安装

在完成软件添加后,您可以验证软件是否已成功添加到 Windows PE 映像中。可以使用 DISM 查看当前映像中已添加的驱动程序或软件包。

命令示例

powershell
Dism /Image:C:\Mount /Get-Packages

技术要点

  • /Get-Packages 命令列出所有已安装的软件包或驱动程序,以确认添加的软件是否已成功安装。

步骤 6:卸载映像并提交更改

一旦自定义软件成功添加,您需要卸载挂载的映像并提交更改。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

这会将您所做的更改写入映像并卸载镜像。

步骤 7:创建新的 Windows PE 映像

最后,您可以将修改后的 Windows PE 映像保存为新的 .wim 文件,用于后续的部署。

命令示例

powershell
Dism /Capture-Image /SourceDir:C:\Mount /ImageFile:C:\WinPE_amd64\custom_boot.wim /Compress:max

这将把修改后的映像保存为新的 .wim 文件。


4️⃣ 完整的操作流程图

text
准备 Windows PE 映像
       ↓
挂载 Windows PE 映像
       ↓
准备驱动程序和软件包
       ↓
使用 DISM 添加驱动程序/软件
       ├─ /Add-Driver
       └─ /Add-Package
       ↓
验证软件安装
       └─ /Get-Packages
       ↓
卸载映像并提交更改
       └─ /Unmount-Wim /Commit
       ↓
创建新的 Windows PE 映像
       └─ /Capture-Image /SourceDir:<mountdir> /ImageFile:<newimage.wim>

5️⃣ 技术分析

常见问题与风险

  1. 驱动程序兼容性问题

    • 在添加驱动程序时,需确保驱动程序与 Windows PE 版本兼容。如果驱动程序不兼容,可能会导致系统无法正常识别硬件或引发蓝屏错误。
  2. 内存和存储空间限制

    • Windows PE 是一个轻量级操作系统,通常存储空间较为紧张。因此,在添加自定义软件时,需要小心控制软件的体积,以免影响 Windows PE 的启动速度和稳定性。
  3. 软件兼容性问题

    • 并非所有 Windows 软件都能在 Windows PE 中正常运行,因为 Windows PE 缺少很多 Windows 正常操作环境中的组件(如某些系统服务)。需要确保自定义软件在 Windows PE 中能够正常运行。
  4. 脚本执行问题

    • 运行 PowerShell 脚本时,确保脚本与 Windows PE 环境兼容。需要避免使用某些依赖于完整 Windows 系统的功能或服务。

优化建议

  1. 使用最小化软件包

    • 在添加软件时,尽量使用轻量级或无依赖的版本,避免添加过于庞大的应用程序。
  2. 测试和验证

    • 在部署之前,最好在虚拟机中进行测试,确保所有自定义软件都能在 Windows PE 中正常运行。
  3. 使用静默安装

    • 确保所有自定义软件支持静默安装,以便在 Windows PE 环境中无需用户交互。
  4. 驱动程序集中管理

    • 为了提高部署效率,最好集中管理所有驱动程序,并在 Windows PE 映像中添加所有必要的驱动程序,以确保硬件兼容性。

通过 DISM 可以将自定义软件和工具添加到 Windows PE 中,从而扩展其功能,满足各种系统恢复、故障排除和部署的需求。虽然 Windows PE 本身非常简洁,但通过适当的自定义,可以让其成为一个强大的系统管理工具。需要注意的是,在添加软件时,务必考虑到兼容性和资源限制,以保证 Windows PE 的稳定性和效率。


DISM 注入驱动程序逻辑链技术分析报告

1️⃣ 输入映像文件

目的:指定要操作的 Windows 映像文件(.wim.esd.vhdx 等),确认版本与索引。

命令示例

powershell
Dism /Get-WimInfo /WimFile:C:\Images\install.wim

技术要点

  • 检查映像文件是否存在。
  • 确认映像索引(Index),用于挂载正确版本。
  • .wim 可包含多个版本,每个版本对应一个索引号。

2️⃣ 挂载映像

目的:将映像加载到一个可写的挂载目录中,以便对其内容进行修改。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\Images\install.wim /Index:1 /MountDir:C:\Mount

技术要点

  • 挂载目录必须为空,通常使用临时文件夹,如 C:\Mount
  • 挂载后,映像就像一个普通文件系统,可以直接访问其驱动目录。
  • 挂载 .esd 时需加 /ReadOnly 或先转换为 .wim,否则无法写入。

3️⃣ 执行注入操作

目的:将驱动程序安装到映像中,使安装该映像的系统自动包含所需驱动。

注入单个驱动

powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\MyDriver.inf

注入驱动目录(递归注入)

powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers /Recurse

技术要点

  • 驱动必须是 .inf 格式。
  • /Recurse 参数会自动扫描子目录,适合批量注入。
  • 注入操作只修改映像,不影响当前运行的系统。
  • 若驱动依赖于特定 Windows 版本,需确保映像版本匹配。

4️⃣ 验证驱动注入

命令示例

powershell
Dism /Image:C:\Mount /Get-Drivers

技术要点

  • 列出已注入和已集成的驱动。
  • 可通过 | findstr "MyDriver" 快速确认特定驱动是否成功注入。

5️⃣ 提交修改

目的:保存对映像的所有修改,包括驱动程序、更新和功能调整。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Commit 保存修改;若使用 /Discard 则取消所有修改。
  • 挂载目录一旦提交,映像文件会更新,大小可能增加。

6️⃣ 卸载 / 释放资源

目的:清理挂载目录,释放系统资源。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Discard

技术要点

  • 确保挂载目录不再被使用。
  • 对 VHD/X 或 FFU 文件可用对应的卸载命令,如 Dismount-VHD

逻辑链概览

text
输入映像文件(.wim/.esd/.vhdx)
       ↓
识别映像版本和索引
       ↓
挂载映像到临时目录
       ↓
注入驱动程序
       ├─ 单个驱动 /Add-Driver /Driver:<file>
       └─ 批量驱动 /Add-Driver /Driver:<folder> /Recurse
       ↓
验证驱动注入
       └─ /Get-Drivers
       ↓
提交修改
       └─ /Unmount-Wim /Commit
       ↓
卸载挂载目录 / 释放资源
       └─ /Unmount-Wim /Discard

技术分析总结

  1. 风险点

    • 驱动不匹配可能导致映像启动失败。
    • 挂载目录占用大量磁盘空间。
    • 注入大量驱动会显著增加映像大小。
  2. 优化策略

    • 只注入必要驱动。
    • 批量注入时提前整理目录,确保无冗余驱动。
    • 对 .esd 文件,建议先转成 .wim 再注入。
  3. 适用场景

    • 企业统一部署 Windows 系统。
    • 自定义安装介质(USB/网络部署)。
    • 集成硬件驱动到系统映像。

DISM 为 Windows PE 添加自定义驱动程序 - 技术分析报告


1️⃣ 概述

Windows PE(Preinstallation Environment)是一个轻量级的操作系统,用于安装、部署和修复 Windows 系统。在部署和维护过程中,有时需要为 Windows PE 环境添加额外的驱动程序,如存储控制器驱动、网络驱动、USB 驱动等。DISM(Deployment Imaging Service and Management Tool)是一个强大的命令行工具,允许用户为 Windows PE 镜像添加驱动程序,使其能够识别特定硬件设备。

本报告将详细分析如何使用 DISM 为 Windows PE 添加自定义驱动程序的步骤和逻辑链,并解释每个步骤的技术细节和注意事项。


2️⃣ 添加自定义驱动程序的需求背景

在某些情况下,Windows PE 可能缺少对特定硬件的支持,例如:

  • 存储设备:例如固态硬盘(SSD)、RAID 控制器。
  • 网络适配器:例如无线网卡、USB 网络适配器。
  • 图形驱动程序:提高图形性能。
  • USB 驱动程序:使 Windows PE 支持更多的 USB 设备。

因此,必须为 Windows PE 映像(.wim 文件)添加相应的驱动程序,以确保 Windows PE 可以在特定硬件上运行。


3️⃣ 添加驱动程序的流程

步骤 1:获取 Windows PE 映像文件

目的:确认 Windows PE 镜像的位置并准备操作。

命令示例

powershell
Dism /Get-WimInfo /WimFile:C:\WinPE\WinPE.wim

技术要点

  • 使用 Dism /Get-WimInfo 获取 Windows PE 映像的详细信息,包括索引、版本等。
  • 确认镜像索引,通常 Windows PE 映像会有一个单独的索引(通常为 Index 1)。

步骤 2:挂载 Windows PE 映像

目的:将 Windows PE 映像加载到一个挂载目录,便于修改。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\WinPE\WinPE.wim /Index:1 /MountDir:C:\Mount

技术要点

  • 挂载目录 C:\Mount 应该是一个空目录。
  • Windows PE 映像挂载后,可以像普通文件系统一样访问和修改其中的内容。
  • 确保挂载操作成功,以避免后续修改失败。

步骤 3:添加自定义驱动程序

目的:将驱动程序添加到 Windows PE 镜像中,使其能够识别特定硬件设备。

添加单个驱动程序
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\MyDriver.inf
批量添加驱动程序(包含子目录)
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers /Recurse

技术要点

  • /Driver 参数指定要添加的驱动程序路径,可以是单个 .inf 文件,也可以是包含多个驱动的目录。
  • /Recurse 参数递归扫描子目录,适用于批量添加驱动。
  • 驱动程序通常以 .inf 格式存储,确保驱动程序与 Windows PE 版本兼容。
  • 如果有多个驱动程序,最好将其整理在一个目录中以方便批量注入。

步骤 4:验证驱动程序是否添加成功

目的:确认驱动程序已正确添加并可在 Windows PE 中使用。

命令示例

powershell
Dism /Image:C:\Mount /Get-Drivers

技术要点

  • 该命令会列出 Windows PE 中所有已安装的驱动程序。
  • 可以使用 findstr 命令过滤特定驱动名称,确保驱动程序已成功注入。

步骤 5:提交更改并卸载映像

目的:保存所做的更改并卸载 Windows PE 映像。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Commit 会将所有修改保存到镜像中。若没有使用 /Commit,修改将不会生效。
  • 使用 /Discard 可以丢弃修改,避免影响镜像文件。

步骤 6:清理资源

目的:卸载挂载的映像并清理资源。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Discard

技术要点

  • 确保映像不再挂载,释放系统资源。
  • 如果使用 /Commit 参数,映像已保存修改,无需使用 /Discard

4️⃣ 完整的操作流程

text
获取 Windows PE 映像文件 (.wim)
       ↓
识别 Windows PE 映像索引
       ↓
挂载 Windows PE 映像到目录
       ↓
添加自定义驱动程序
       ├─ 单个驱动 /Add-Driver /Driver:<file>
       └─ 批量驱动 /Add-Driver /Driver:<folder> /Recurse
       ↓
验证驱动程序注入成功
       └─ /Get-Drivers
       ↓
提交修改并卸载映像
       └─ /Unmount-Wim /Commit
       ↓
清理挂载目录资源
       └─ /Unmount-Wim /Discard

5️⃣ 技术分析

常见问题与风险

  1. 驱动程序兼容性

    • 驱动程序必须与 Windows PE 版本兼容。如果添加的驱动程序不兼容,可能会导致 Windows PE 启动失败或硬件无法正常工作。
  2. 磁盘空间不足

    • 挂载映像时需要足够的磁盘空间,特别是当 Windows PE 映像较大时。建议确保挂载目录所在磁盘空间充足。
  3. 驱动程序添加顺序

    • 有些驱动程序可能有依赖关系,需要按正确的顺序添加。例如,存储控制器驱动需要在磁盘操作之前加载。
  4. 网络驱动程序

    • 如果需要在 Windows PE 中使用网络功能(例如,通过网络部署),确保已正确添加网络驱动程序。

6️⃣ 优化建议

  1. 使用批量添加驱动程序

    • 如果需要添加多个驱动程序,使用 /Recurse 选项来一次性批量添加,避免逐个驱动添加的繁琐。
  2. 自动化脚本

    • 使用 PowerShell 脚本自动化整个驱动程序注入过程,便于多次使用和批量处理。
  3. 测试驱动程序

    • 在实际使用之前,最好在一个虚拟环境中测试所添加的驱动程序,确保没有问题。
  4. 使用精简驱动程序包

    • 确保只添加必要的驱动程序,以减少 Windows PE 镜像的体积并提高启动速度。

通过使用 DISM 工具,可以轻松地为 Windows PE 添加自定义驱动程序,从而确保 Windows PE 能在特定硬件环境下正常工作。该过程包括识别映像、挂载映像、添加驱动、验证驱动程序注入、提交修改以及清理资源等步骤。通过遵循这些步骤,用户能够确保系统映像在部署时具有完整的硬件支持。


DISM 为 .WIM 添加自定义驱动程序 - 技术分析报告


1️⃣ 概述

在 Windows 操作系统的部署和管理过程中,.WIM(Windows Imaging Format)文件通常用来存储操作系统映像。DISM(Deployment Imaging Service and Management Tool)是一个功能强大的命令行工具,能够对 .WIM 文件进行各种操作,包括添加、修改和删除驱动程序。为 .WIM 文件添加自定义驱动程序可以使映像在特定硬件环境下正常工作,确保硬件设备如存储设备、网络适配器等能够被识别和支持。

本报告将详细分析如何使用 DISM 为 .WIM 文件添加自定义驱动程序,重点讨论每个操作步骤的逻辑链及其技术细节。


2️⃣ 添加自定义驱动程序的需求背景

在许多情况下,默认的 Windows 映像可能不支持某些硬件设备,尤其是专用硬件或较新的设备。以下是常见的需求背景:

  • 存储设备驱动程序:例如 SSD 驱动程序、RAID 控制器驱动程序。
  • 网络适配器驱动程序:例如无线网卡、以太网卡。
  • 特殊硬件支持:例如定制的图形卡或 USB 控制器。

通过为 .WIM 文件添加这些驱动程序,可以确保系统在安装时能够正确识别和配置硬件设备。


3️⃣ 为 .WIM 文件添加自定义驱动程序的流程

步骤 1:准备驱动程序文件

首先,确保需要添加的驱动程序文件准备好,并且能够被 Windows 识别。驱动程序通常是 .inf 文件格式,可以包含多个 .sys.cat 文件。

技术要点

  • 驱动程序应该是与目标操作系统版本和体系结构(如 x64 或 x86)兼容的。
  • 如果是批量驱动程序,确保它们都存放在同一个目录中。

步骤 2:挂载 .WIM 映像文件

目的:将 .WIM 文件挂载到一个临时目录,以便对其进行修改。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\Images\install.wim /Index:1 /MountDir:C:\Mount

技术要点

  • /Mount-Wim 命令用于挂载 .WIM 文件,/Index:1 参数指定使用的映像索引,通常 1 为默认的操作系统映像。
  • /MountDir:C:\Mount 参数指定挂载目录,确保该目录为空并具有足够的空间。

步骤 3:添加驱动程序到挂载的映像

目的:将驱动程序添加到挂载的 .WIM 映像中,使其在安装时能够识别硬件。

添加单个驱动程序
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\driver1.inf
批量添加驱动程序
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers /Recurse

技术要点

  • /Add-Driver 命令用于将驱动程序添加到指定的映像中。
  • /Driver 参数指定驱动程序的路径,可以是单个驱动程序文件(.inf)或包含多个驱动程序的目录。
  • /Recurse 参数用于递归扫描目录,批量添加该目录中的所有驱动程序文件。

步骤 4:验证驱动程序是否成功添加

目的:确认驱动程序已正确注入并可在映像中使用。

命令示例

powershell
Dism /Image:C:\Mount /Get-Drivers

技术要点

  • /Get-Drivers 命令会列出当前挂载映像中所有已安装的驱动程序。
  • 可以通过 findstr 命令筛选出特定的驱动程序名称,确保所需的驱动程序已经成功添加。

步骤 5:提交更改并卸载映像

目的:将修改保存到 .WIM 文件,并卸载映像。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Unmount-Wim 命令用于卸载挂载的映像,/Commit 参数确保保存所有更改。
  • 如果没有使用 /Commit 参数,挂载的映像更改将不会保存。

步骤 6:清理资源

目的:确保所有资源都被正确释放。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Discard

技术要点

  • /Discard 参数将丢弃未提交的更改,并卸载映像。
  • 该步骤适用于当不希望保存更改时。

4️⃣ 完整的操作流程图

text
准备驱动程序文件
       ↓
获取并验证 .WIM 文件信息
       ↓
挂载 .WIM 映像到目录
       ↓
添加自定义驱动程序
       ├─ 单个驱动:/Add-Driver /Driver:<file>
       └─ 批量驱动:/Add-Driver /Driver:<folder> /Recurse
       ↓
验证驱动程序是否添加成功
       └─ /Get-Drivers
       ↓
提交修改并卸载映像
       └─ /Unmount-Wim /Commit
       ↓
清理挂载目录
       └─ /Unmount-Wim /Discard

5️⃣ 技术分析

常见问题与风险

  1. 驱动程序兼容性问题

    • 驱动程序必须与操作系统版本和体系结构兼容。使用不兼容的驱动程序可能导致安装失败或硬件无法正确识别。
  2. 磁盘空间不足

    • 在挂载 .WIM 文件时,必须确保挂载目录所在的磁盘有足够的可用空间,尤其是当操作系统映像较大时。
  3. 驱动程序依赖关系

    • 有些驱动程序可能依赖其他驱动程序或服务,添加驱动时需要考虑其依赖关系。例如,存储驱动程序可能需要首先加载磁盘驱动程序。
  4. 错误的驱动程序路径

    • 如果驱动程序路径错误或驱动文件缺失,添加驱动时会出现错误,需要确保路径的准确性。

6️⃣ 优化建议

  1. 驱动程序预检查

    • 在为 .WIM 文件添加驱动程序之前,可以先通过 Windows Hardware Lab Kit (HLK) 等工具检查驱动程序的兼容性,确保它们可以正常工作。
  2. 使用自动化脚本

    • 可以使用 PowerShell 脚本来批量处理驱动程序的添加过程,避免手动操作的繁琐,提高效率。
  3. 测试驱动程序添加结果

    • 在实际使用之前,最好在虚拟环境中测试所添加的驱动程序,确保它们与硬件兼容且能正常工作。
  4. 保持映像简洁

    • 在 .WIM 文件中仅添加必需的驱动程序,避免过多的驱动程序使映像变得庞大,这可能影响部署速度和系统性能。

使用 DISM 工具为 .WIM 文件添加自定义驱动程序是确保操作系统能够正确识别和支持硬件的有效方法。整个流程包括挂载映像、添加驱动程序、验证驱动程序、提交更改以及清理资源。通过合理的步骤和注意事项,能够顺利完成驱动程序注入操作,从而在安装或恢复过程中保证硬件的兼容性。


DISM 为 .FFU 添加自定义驱动程序 - 技术分析报告


1️⃣ 概述

.FFU(Full Flash Update)文件格式通常用于 Windows 操作系统的完整镜像,特别是在嵌入式设备和特定硬件上进行系统恢复和部署时。与 .WIM 文件类似,.FFU 文件也包含了操作系统和驱动程序等资源。然而,.FFU 文件的特点是它采用了一个压缩的文件系统映像,与 .WIM 文件有所不同。

DISM(Deployment Imaging Service and Management Tool)工具能够对 .WIM 文件进行操作,但它并不原生支持对 .FFU 文件直接进行修改,因此为 .FFU 文件添加自定义驱动程序需要通过一些间接方式,如将 .FFU 文件转换为 .WIM 文件,或使用其他适配工具。

本报告将分析如何通过适当的步骤和方法,为 .FFU 文件添加自定义驱动程序,并解释相关的技术细节。


2️⃣ 为 .FFU 文件添加自定义驱动程序的背景需求

在某些情况下,操作系统的默认映像中缺少特定硬件所需的驱动程序。例如:

  • 存储控制器驱动程序:如 SSD 控制器、RAID 控制器等。
  • 网络适配器驱动程序:如以太网卡、无线网卡等。
  • 特殊硬件支持:如定制的图形卡、传感器驱动等。

.FFU 文件添加驱动程序可以确保在恢复或部署操作系统时,目标设备能够正确识别并支持硬件设备。


3️⃣ 为 .FFU 文件添加自定义驱动程序的流程

由于 DISM 不直接支持对 .FFU 文件进行修改,我们可以通过以下步骤进行操作:

步骤 1:将 .FFU 文件转换为 .WIM 文件

在开始操作之前,必须将 .FFU 文件转换为 .WIM 文件。我们可以使用 ImageXDISM 等工具进行此转换。

命令示例

powershell
Dism /Export-Image /SourceImageFile:C:\Images\image.ffu /SourceIndex:1 /DestinationImageFile:C:\Images\image.wim

技术要点

  • /Export-Image 命令将 .FFU 文件导出为 .WIM 文件。
  • /SourceImageFile 指定源 .FFU 文件路径,/DestinationImageFile 指定目标 .WIM 文件路径。

此步骤的目的是将 .FFU 映像转换为 .WIM 格式,以便后续使用 DISM 添加驱动程序。

步骤 2:挂载转换后的 .WIM 文件

.WIM 文件挂载到一个临时目录,以便进行驱动程序的添加。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\Images\image.wim /Index:1 /MountDir:C:\Mount

技术要点

  • /Mount-Wim 命令挂载 .WIM 文件。
  • /Index:1 参数指定要挂载的映像索引,通常操作系统映像是第一个索引。
  • /MountDir:C:\Mount 用于指定挂载目录。

步骤 3:添加自定义驱动程序

此时,您可以使用 DISM 为挂载的 .WIM 文件添加自定义驱动程序。

单个驱动程序添加
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\driver1.inf
批量驱动程序添加
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers /Recurse

技术要点

  • /Add-Driver 命令用于将驱动程序添加到挂载的映像中。
  • /Driver 参数指定驱动程序路径,可以是单个 .inf 文件或包含多个 .inf 文件的目录。
  • /Recurse 参数用于递归目录,以批量添加多个驱动程序。

步骤 4:验证驱动程序是否添加成功

使用以下命令验证驱动程序是否已正确添加。

命令示例

powershell
Dism /Image:C:\Mount /Get-Drivers

技术要点

  • /Get-Drivers 命令列出挂载映像中所有的驱动程序。
  • 可以使用 findstr 等工具筛选出特定的驱动程序,确保驱动程序添加成功。

步骤 5:提交更改并卸载映像

完成驱动程序的添加后,您需要提交更改并卸载映像。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Unmount-Wim 命令用于卸载挂载的 .WIM 文件,并提交所有更改。
  • /Commit 参数用于保存所做的更改。

步骤 6:将 .WIM 文件转换回 .FFU 文件

一旦驱动程序添加到 .WIM 文件中并提交保存,就可以将其转换回 .FFU 文件格式。

命令示例

powershell
Dism /Capture-Image /SourceDir:C:\Mount /ImageFile:C:\Images\image.ffu /Compress:max

技术要点

  • /Capture-Image 命令用于将挂载目录转换回 .FFU 文件。
  • /SourceDir:C:\Mount 指定挂载目录,/ImageFile:C:\Images\image.ffu 指定目标 .FFU 文件路径。
  • /Compress:max 参数用于压缩生成的 .FFU 文件,优化存储空间。

4️⃣ 完整的操作流程图

text
准备自定义驱动程序
       ↓
转换 .FFU 文件为 .WIM 文件
       ↓
挂载 .WIM 映像
       ↓
添加驱动程序
       ├─ 单个驱动:/Add-Driver /Driver:<file>
       └─ 批量驱动:/Add-Driver /Driver:<folder> /Recurse
       ↓
验证驱动程序是否添加成功
       └─ /Get-Drivers
       ↓
提交修改并卸载映像
       └─ /Unmount-Wim /Commit
       ↓
将 .WIM 文件转换回 .FFU 文件
       └─ /Capture-Image /SourceDir:<mountdir> /ImageFile:<ffufile>

5️⃣ 技术分析

常见问题与风险

  1. 驱动程序兼容性问题

    • 驱动程序必须与目标硬件和操作系统版本兼容。如果驱动程序不兼容,可能会导致操作系统无法正确识别硬件或出现系统不稳定的情况。
  2. 磁盘空间不足

    • 在挂载和转换过程中,需要足够的磁盘空间。.FFU 文件通常较大,挂载过程可能会占用大量空间,尤其是在目标设备的硬件配置较复杂时。
  3. 驱动程序依赖问题

    • 如果驱动程序依赖其他组件(如 .NET 框架、运行时库等),需要确保这些依赖项在映像中已添加或兼容。
  4. 文件系统限制

    • .FFU 文件采用的文件系统可能存在某些限制,需要确保在执行转换操作时不会遇到文件系统不兼容的问题。

优化建议

  1. 检查驱动程序兼容性

    • 在为映像添加驱动程序之前,最好通过 Windows Hardware Lab Kit(HLK)或其他测试工具验证驱动程序的兼容性。
  2. 脚本化自动化流程

    • 为提高效率,尤其是在批量部署中,可以通过 PowerShell 脚本自动化这些步骤,减少手动操作带来的错误。
  3. 虚拟环境测试

    • 在正式部署前,先在虚拟机中测试新生成的 .FFU 文件,确保硬件驱动程序能够在目标硬件上正常运行。

.FFU 文件添加自定义驱动程序需要首先将 .FFU 文件转换为 .WIM 文件,并通过 DISM 工具进行驱动程序的添加。完成后,再将修改过的映像转换回 .FFU 格式。这一过程虽然较为繁琐,但通过精确的步骤和技术手段,可以确保硬件驱动程序正确地注入到系统映像中,从而保证硬件设备的兼容性和系统的稳定性。


DISM 为 .ESD 文件添加自定义驱动程序 - 技术分析报告


1️⃣ 概述

.ESD(Electronic Software Distribution)文件是一种用于 Windows 操作系统镜像的压缩文件格式,通常用于通过 Microsoft 的分发机制(如 Windows Update 或其他渠道)分发操作系统映像。与 .WIM 文件类似,.ESD 文件包含了操作系统及其组件,并可以通过 Windows 部署工具(如 DISM)进行管理。

目标:通过 DISM(Deployment Imaging Service and Management Tool)为 .ESD 文件添加自定义驱动程序,确保目标设备在安装系统时能正确识别硬件。

2️⃣ 为 .ESD 文件添加自定义驱动程序的背景需求

在某些操作系统部署过程中,默认的操作系统镜像可能不包含某些特定硬件所需要的驱动程序。例如:

  • 存储控制器驱动程序:如 SSD 控制器、RAID 控制器等。
  • 网络适配器驱动程序:如以太网卡、无线网卡等。
  • 特殊硬件支持:如定制的图形卡、传感器驱动等。

.ESD 文件添加自定义驱动程序可以确保在部署操作系统时,硬件能够被正确识别并正常工作。


3️⃣ 为 .ESD 文件添加自定义驱动程序的流程

DISM 本身并不直接支持对 .ESD 文件进行修改,因此需要借助一些间接方式来操作。通常的处理流程如下:

步骤 1:将 .ESD 文件转换为 .WIM 文件

首先,您需要将 .ESD 文件转换为 .WIM 文件。DISM 可以直接处理 .WIM 文件,因此这一步是必需的。

命令示例

powershell
Dism /Export-Image /SourceImageFile:C:\Images\image.esd /SourceIndex:1 /DestinationImageFile:C:\Images\image.wim

技术要点

  • /Export-Image 命令将 .ESD 文件导出为 .WIM 文件。
  • /SourceImageFile 指定源 .ESD 文件的路径,/DestinationImageFile 指定目标 .WIM 文件的路径。

步骤 2:挂载转换后的 .WIM 文件

将转换后的 .WIM 文件挂载到一个临时目录,以便进行驱动程序的添加。

命令示例

powershell
Dism /Mount-Wim /WimFile:C:\Images\image.wim /Index:1 /MountDir:C:\Mount

技术要点

  • /Mount-Wim 命令挂载 .WIM 文件。
  • /Index:1 参数指定要挂载的映像索引,通常操作系统映像为第一个索引。
  • /MountDir:C:\Mount 用于指定挂载目录。

步骤 3:添加自定义驱动程序

在挂载后的 .WIM 映像中,使用 DISM 为其添加自定义驱动程序。

单个驱动程序添加
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers\driver1.inf
批量驱动程序添加
powershell
Dism /Image:C:\Mount /Add-Driver /Driver:C:\Drivers /Recurse

技术要点

  • /Add-Driver 命令用于将驱动程序添加到挂载的映像中。
  • /Driver 参数指定驱动程序路径,可以是单个 .inf 文件或包含多个 .inf 文件的目录。
  • /Recurse 参数递归地添加指定目录下的所有驱动程序。

步骤 4:验证驱动程序是否成功添加

在驱动程序添加后,可以使用以下命令验证是否成功添加了驱动程序。

命令示例

powershell
Dism /Image:C:\Mount /Get-Drivers

技术要点

  • /Get-Drivers 命令列出挂载映像中所有的驱动程序,帮助验证驱动程序是否已正确添加。

步骤 5:提交更改并卸载映像

完成驱动程序添加后,需要提交更改并卸载挂载的映像。

命令示例

powershell
Dism /Unmount-Wim /MountDir:C:\Mount /Commit

技术要点

  • /Unmount-Wim 命令用于卸载挂载的 .WIM 文件,并提交所有更改。
  • /Commit 参数确保将所有更改保存到 .WIM 文件。

步骤 6:将 .WIM 文件转换回 .ESD 文件

一旦驱动程序添加并提交更改,可以将 .WIM 文件转换回 .ESD 文件。

命令示例

powershell
Dism /Capture-Image /SourceDir:C:\Mount /ImageFile:C:\Images\image.esd /Compress:max

技术要点

  • /Capture-Image 命令用于将挂载目录转换回 .ESD 文件。
  • /SourceDir:C:\Mount 指定挂载目录,/ImageFile:C:\Images\image.esd 指定目标 .ESD 文件路径。
  • /Compress:max 参数用于压缩生成的 .ESD 文件,节省存储空间。

4️⃣ 完整的操作流程图

text
准备自定义驱动程序
       ↓
转换 .ESD 文件为 .WIM 文件
       ↓
挂载 .WIM 映像
       ↓
添加驱动程序
       ├─ 单个驱动:/Add-Driver /Driver:<file>
       └─ 批量驱动:/Add-Driver /Driver:<folder> /Recurse
       ↓
验证驱动程序是否添加成功
       └─ /Get-Drivers
       ↓
提交修改并卸载映像
       └─ /Unmount-Wim /Commit
       ↓
将 .WIM 文件转换回 .ESD 文件
       └─ /Capture-Image /SourceDir:<mountdir> /ImageFile:<esdfile>

5️⃣ 技术分析

常见问题与风险

  1. 驱动程序兼容性问题

    • 驱动程序必须与目标硬件和操作系统版本兼容。如果驱动程序不兼容,可能会导致操作系统无法正确识别硬件,或出现系统不稳定的情况。
  2. 磁盘空间不足

    • 在挂载和转换过程中,需要足够的磁盘空间。.ESD 文件通常较小,但转换过程和挂载映像时会占用较大空间。
  3. 驱动程序依赖问题

    • 如果驱动程序依赖其他组件(如 .NET 框架、运行时库等),需要确保这些依赖项在映像中已添加或兼容。
  4. 文件系统限制

    • .ESD 文件采用的文件系统可能存在某些限制,操作系统部署时可能会出现文件系统不兼容的问题。

优化建议

  1. 检查驱动程序兼容性

    • 在为映像添加驱动程序之前,最好通过 Windows Hardware Lab Kit(HLK)或其他测试工具验证驱动程序的兼容性。
  2. 脚本化自动化流程

    • 为提高效率,尤其是在批量部署中,可以通过 PowerShell 脚本自动化这些步骤,减少手动操作带来的错误。
  3. 虚拟环境测试

    • 在正式部署前,先在虚拟机中测试新生成的 .ESD 文件,确保硬件驱动程序能够在目标硬件上正常运行。

通过上述步骤,您可以使用 DISM 为 .ESD 文件添加自定义驱动程序。虽然 DISM 本身不直接支持对 .ESD 文件进行修改,但通过将其转换为 .WIM 文件后进行操作,可以成功地为映像添加所需的硬件驱动程序。这一过程需要精确的操作和步骤,但能够确保目标设备在安装操作系统时能够正确识别并支持硬件设备,提升系统稳定性和兼容性。


 

posted @ 2023-05-29 07:50  suv789  阅读(947)  评论(0)    收藏  举报