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 映像中的可选组件时,即使服务操作成功,可选组件也将始终列为挂起。 这是有意设计的,无需额外操作。