DISM 操作系统包(.cab 或 .msu)服务命令行选项

将 DISM 与 Windows 机柜 (.cab) 或 Windows 更新独立安装程序 (.msu) 文件配合使用,以安装或删除更新、语言包,以及启用或禁用 Windows 功能。 功能是核心操作系统的可选组件。

语法

DISM.exe {/Image:<path_to_image_directory> | /Online} [dism_global_options] {servicing_option} [<servicing_argument>]

以下操作系统包服务选项可用于脱机映像:

DISM.exe /Image:<path_to_image_directory> [/Get-Packages | /Get-PackageInfo | /Add-Package | /Remove-Package ] [/Get-Features | /Get-FeatureInfo | /Enable-Feature | /Disable-Feature ] [/Cleanup-Image]

以下操作系统包服务选项可用于正在运行的操作系统:

DISM.exe /Online [/Get-Packages | /Get-PackageInfo | /Add-Package | /Remove-Package ] [/Get-Features | /Get-FeatureInfo | /Enable-Feature | /Disable-Feature ] [/Cleanup-Image]

/Get-Help /?

在包服务命令行选项之后立即使用时,将显示有关选项和参数的信息。

指定映像后,其他主题可能会变得可用。

语法

Dism /Get-Help 

示例:

Dism /Image:C:\test\offline /Add-Package /?
Dism /Online /Get-Packages /?

/Get-Packages

显示映像中所有包的基本信息。 使用/Format:Table/Format:List 或参数将输出显示为表格或列表。

语法

Dism /Get-Packages [/Format:{Table | List}]

示例:

Dism /Image:C:\test\offline /Get-Packages
Dism /Image:C:\test\offline /Get-Packages /Format:Table
Dism /Online /Get-Packages

/Get-PackageInfo

显示关于作为 .cab 文件提供的包的详细信息。 只能指定 .cab 文件。 不能使用此命令获取 .msu 文件的包信息。 /PackagePath:<path_to_package> 可以指向 .cab 文件或文件夹。

可以使用 /Get-Packages 在映像中查找包的名称,也可以指定 .cab 文件的路径。 .cab 文件的路径应指向包的原始源,而不是文件在脱机映像上的安装位置。

语法

Dism /Get-PackageInfo {/PackageName:<name_in_image> | /PackagePath:<path_to_cabfile>}

示例:

Dism /Image:C:\test\offline /Get-PackageInfo /PackagePath:C:\packages\package.cab
Dism /Image:C:\test\offline /Get-PackageInfo /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0

/Add-Package

安装映像中指定的 .cab 或 .msu 包。

注意

可以使用 /Add-Package 将 .msu 包添加到联机或脱机 Windows 11 版本 21H2 或更高版本映像。 如果在 Windows 11 版本 21H2 之前使用 Windows 映像,则只能在脱机目标映像上添加 .msu 包。

可以在一个命令行上添加多个包。 将检查每个包的适用性。 如果包无法应用于指定的映像,你将收到一条错误消息。 如果希望在不检查每个包的适用性的情况下处理命令,请使用 /IgnoreCheck 参数。

语法:

Dism /Add-Package /PackagePath:<path_to_cabfile> [/IgnoreCheck] [/PreventPending]
  • /PackagePath 可以指向:

    • 单个.cab或 .msu 文件。
    • 一个文件夹,包含单个展开的 .cab 文件。
    • 一个文件夹,包含单个 .msu 文件。
    • 一个文件夹,包含多个 .cab 或 .msu 文件。
  • 如果 /PackagePath 指向在其根目录中包含 .cab 或 .msu 文件的文件夹,则还将递归检查任何子文件夹中的 .cab 和 .msu 文件。

  • 如果程序包或 Windows 映像有待处理的联机操作,请使用 /PreventPending 选项跳过程序包的安装。

注意

/Add-Package 不会对包的适用性和依赖性进行全面检查:

  • 如果要添加具有依赖项的包,请确保在添加包时安装所有依赖项。
  • 如果要添加 .msu,请务必在关联 KB 中检查是否有任何特定于包的安装说明。

示例:

Dism /Image:C:\test\offline /LogPath:AddPackage.log /Add-Package /PackagePath:C:\packages\package.msu
Dism /Image:C:\test\offline /Add-Package /PackagePath:C:\packages\package1.cab /PackagePath:C:\packages\package2.cab /IgnoreCheck
Dism /Image:C:\test\offline /Add-Package /PackagePath:C:\test\packages\package.cab /PreventPending

检查点累积更新

从 Windows 11 版本 24H2 开始,最新的累积更新可能具有需要先安装的必备累积更新。 若要安装这些检查点累积更新,请使用目标累积更新调用 /Add-Package。 -PackagePath 中的文件夹将用于根据需要发现和安装一个或多个检查点。 只有目标累积更新和任何先决条件检查点累积更新才应位于 -PackagePath 文件夹中。 将处理修订版低于或等于目标累积更新的累积更新包。

/Remove-Package

从映像中删除指定的 .cab 文件包。 只能指定 .cab 文件。 不能使用此命令删除 .msu 文件。

注意

使用此命令从脱机映像中删除包不会减小映像大小。

语法:

/Remove-Package {/PackageName:<name_in_image> | /PackagePath:<path_to_cabfile>}
  • 使用 /PackagePath 指向包的原始源,指定 CAB 文件的路径,或按映像中列出的名称指定包。 使用 /Get-Packages 选项查找映像中包的名称。

示例:

Dism /Image:C:\test\offline /LogPath:C:\test\RemovePackage.log /Remove-Package /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0
Dism /Image:C:\test\offline /LogPath:C:\test\RemovePackage.log /Remove-Package /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0 /PackageName:Microsoft-Windows-MediaPlayer-Package~31bf3856ad364e35~x86~~6.1.6801.0
Dism /Image:C:\test\offline /LogPath:C:\test\RemovePackage.log /Remove-Package /PackagePath:C:\packages\package1.cab /PackagePath:C:\packages\package2.cab

/Get-Features

显示有关包中所有功能(包括可选 Windows 基础功能的操作系统组件)的基本信息。

语法:

/Get-Features {/PackageName:<name_in_image> | /PackagePath:<path_to_cabfile>} [/Format:{Table | List}]
  • /Get-Features 在映像中或包的原始源中查找包的名称。 如果你不指定包名称或路径,则会列出映像中的所有功能。
  • /PackageName 是映像中的包。 可以使用 /DISM Get-Packages 来查看映像中的包名称。
  • /PackagePath 可以指向 .cab 文件或文件夹。

使用/Format:Table/Format:List 或参数将输出显示为表格或列表。

示例:

Dism /Image:C:\test\offline /Get-Features
Dism /Image:C:\test\offline /Get-Features /Format:List
Dism /Image:C:\test\offline /Get-Features /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0
Dism /Image:C:\test\offline /Get-Features /PackagePath:C:\packages\package1.cab

/Get-FeatureInfo

显示有关功能的详细信息。 必须使用 /FeatureName。 可以使用 /Get-Features 选项在映像中查找功能的名称。

语法:

/Get-FeatureInfo /FeatureName:<name_in_image> [{/PackageName:<name_in_image> | /PackagePath:<path_to_cabfile>}]

/PackageName/PackagePath 是可选的,可用于查找包中的特定功能。

示例:

Dism /Image:C:\test\offline /Get-FeatureInfo /FeatureName:Hearts
Dism /Image:C:\test\offline /Get-FeatureInfo /FeatureName:Hearts /PackagePath:C:\packages\package.cab

/Enable-Feature

启用或更新映像中的指定功能。 必须使用 /FeatureName 选项。 使用 /Get-Features 选项在映像中查找功能的名称。

语法:

/Enable-Feature /FeatureName:<name_in_image> [/PackageName:<name_in_image>] [/Source: <source>] [/LimitAccess] [/All]

对于共享同一个父包的功能,你可以在一个命令行中多次指定 /FeatureName 选项。

如果包是 Windows Foundation 包,则不必使用 /PackageName 选项指定包名称。 否则请使用 /PackageName 来指定功能的父包。

你可以恢复和启用以前从映像中删除的功能。 使用 /Source 参数指定还原功能所需的文件的位置。 文件的源可以是安装映像中的 Windows 文件夹,例如 c:\test\mount\Windows。 你还可以使用 Windows 并排文件夹作为文件源,例如 z:\sources\SxS

如果指定多个 /Source 参数,则会从找到文件的第一个位置收集文件,忽略其他位置。 如果你没有为已删除的功能指定 /Source,则使用注册表中的默认位置;对于联机映像,则使用 Windows 更新 (WU)。

  • 使用 /LimitAccess 来防止 DISM 联系 WU 获取联机映像。
  • 使用 /All 启用指定功能的所有父功能。

示例:

Dism /Online /Enable-Feature /FeatureName:Hearts /All
Dism /Online /Enable-Feature /FeatureName:Calc /Source:c:\test\mount\Windows /LimitAccess
Dism /Image:C:\test\offline /Enable-Feature /FeatureName:Calc /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0

/Disable-Feature

禁用映像中的指定功能。 必须使用 /FeatureName 选项。 使用 /Get-Features 选项在映像中查找功能的名称。

语法:

/Disable-Feature /FeatureName:<name_in_image> [/PackageName:<name_in_image>] [/Remove]

你可以在一个命令行中为同一父包中的功能多次指定 /FeatureName

如果包是 Windows Foundation 包,则不必使用 /PackageName 选项指定包名。 否则请使用 /PackageName 来指定功能的父包。

使用 /Remove 删除功能,而不从映像中删除功能的清单。 使用 /Get-FeatureInfo 显示功能详细信息时,该功能将列为“已删除”,但可以使用 /Enable-Feature 和 /Source 选项还原和启用。

示例:

*Dism /Online /Disable-Feature /FeatureName:Hearts
Dism /Image:C:\test\offline /Disable-Feature /FeatureName:Calc /PackageName:Microsoft.Windows.Calc.Demo~6595b6144ccf1df~x86~en~1.0.0.0

/Cleanup-Image

对映像执行清理或恢复操作。 /AnalyzeComponentStore/ResetBase 可用于 Windows 10、Windows 8.1 和 5.0 以上的 Windows PE 映像。 从 Windows 10 版本 1607 开始,你可以将 /Defer/ResetBase 一起指定,但在 DISM /Resetbase 需要超过 30 分钟才能完成的工厂中,你应该只使用 /Defer 作为选项。

提示

要确定上次运行 /ResetBase 选项的时间,请检查 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing 注册表路径下的 LastResetBase_UTC 注册表项。

语法

/Cleanup-Image {/RevertPendingActions | /SPSuperseded [/HideSP] | /StartComponentCleanup [/ResetBase [/Defer]] | /AnalyzeComponentStore | /CheckHealth | /ScanHealth | /RestoreHealth [/Source: <filepath>] [/LimitAccess]}
参数 说明
/RevertPendingActions 如果你遇到引导失败,你可以使用 /RevertPendingActions 选项来尝试恢复系统。 该操作会从以前的服务操作中恢复所有挂起的操作,因为这些操作可能是引导失败的原因。 正在运行的操作系统或 Windows PE 或 Windows 恢复环境 (Windows RE) 映像不支持 /RevertPendingActions 选项。 重要提示:只能在未启动的 Windows 映像的系统恢复方案中使用 /RevertPendingActions 选项。
SPSuperseded 删除在安装服务包期间创建的所有备份文件。 使用 /HideSP 可防止在“已安装的更新”服务控制面板中列出该服务包。 /SPSuperseded 操作完成后,无法卸载该服务包。
/StartComponentCleanup 清理被取代的组件并减小组件存储的大小。 使用 /ResetBase 重置被取代组件的基础,这可以进一步减少组件存储大小。 使用 /ResetBase 选项运行 /StartComponentCleanup 后,将无法卸载已安装的 Windows 更新。 使用 /Defer 和 /ResetBase 将长时间运行的清理操作推迟到下一次自动维护。
/AnalyzeComponentStore 创建组件存储的报告。 有关报告的详细信息以及如何使用报告中提供的信息,请参阅确定 WinSxS 文件夹的实际大小
/CheckHealth 检查映像是否已被标记为被失败进程损坏,以及是否可以修复损坏。
/ScanHealth 扫描映像以查找组件存储损坏情况。 此操作将需要几分钟时间。
/RestoreHealth 扫描映像以查找组件存储损坏情况,然后自动执行修复操作。 此操作将需要几分钟时间。
/Source 与 /RestoreHealth 一起使用以指定可用于修复的已知良好文件版本的位置,例如已安装映像的 Windows 目录的路径。
/LimitAccess 阻止 DISM 联系 Windows 更新以修复联机映像。

示例:

Dism /Image:C:\test\offline /Cleanup-Image /RevertPendingActions
Dism /Image:C:\test\offline /Cleanup-Image /SPSuperseded /HideSP
Dism /Online /Cleanup-Image /ScanHealth
Dism /Online /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows /LimitAccess

有关详细信息,请参阅修复 Windows 映像

限制

  • 在脱机映像中安装包时,由于挂起的联机操作,包状态为“安装挂起”。 换句话说,包将在启动映像并处理联机操作时安装。 如果请求后续操作,则在前一个待处理的在线操作完成之前,后续操作无法被处理。 当你添加带有 /AddPackage 的包时,可以使用 /PreventPending 选项以在有待处理的联机操作时跳过包的安装。
  • 某些包要求首先安装其他包。 你不应该假设会满足依赖关系。 如果包具有依赖项要求,请使用答案文件来安装必要的包。 通过将答案文件传送到 DISM,多个包以正确的顺序进行安装。 有关详细信息,请参阅使用 DISM 离线添加或删除程序包
  • 包按照它们在命令行中的列出顺序安装。
  • 使用 DISM 列出 Windows PE 映像中的可选组件时,即使服务操作成功,可选组件也将始终列为挂起。 这是有意设计的,无需额外操作。

什么是 DISM?

DISM 映像管理命令行选项

部署映像服务和管理 (DISM) 命令行选项