Dism-Cleanup-image命令详解
目录
- 撤销最近的系统更改
- 确定 WinSxS 文件夹的实际大小
- 2.1 AnalyzeComponentStore
- 2.2 查看可清理的组件
- 清除 WinSxS 文件夹
- 删除安装服务包期间创建的所有备份文件
- 4.1 spsuperseded
- 修复 Windows 映像
- 5.1 CheckHealth
- 5.2 ScanHealth
- 5.3 RestoreHealth
- 指定修复使用的来源
- 6.1 装载的映像
- 6.2 运行的 Windows 安装
- 6.3 并排 (SxS) 文件夹
- 6.4 WIM 文件
- 6.5 指定源时
- 使用系统文件检查器工具修复丢失或损坏的系统文件
1. 撤销最近的系统更改
撤销 Windows 镜像中挂起的安装、更改或移除操作
/Cleanup-Image /RevertPendingActions
警告! 您只能在系统恢复场景中使用 /RevertPendingActions 选项,以对无法启动的 Windows 映像执行恢复操作。
如果你遇到引导失败,你可以使用 /RevertPendingActions 选项来尝试恢复系统。该操作会从以前的服务操作中恢复所有挂起的操作,因为这些操作可能是引导失败的原因。
正在运行的操作系统或 Windows PE 或 Windows 恢复环境 (Windows RE) 映像不支持 /RevertPendingActions 选项。
重要提示: 只能在未启动的 Windows 映像的系统恢复方案中使用 /RevertPendingActions 选项。
示例:
DISM /Image:C:\test\offline /Cleanup-Image /RevertPendingActions
2. 确定 WinSxS 文件夹的实际大小
/Cleanup-Image /AnalyzeComponentStore
使用 /AnalyzeComponentStore 生成 WinSxS 组件存储的报告。
更多信息:
说明:
组件存储(WinSxS 文件夹)包含组成 Windows 并允许你操作系统的组件。这些组件保存在此文件夹中,以防需要回滚更改或修复损坏的文件。
此文件夹中的文件看起来可能存储在操作系统的多个位置中,但通常只有一个文件副本,其余副本实际上是硬链接。某些工具(如文件资源管理器)会在不考虑包含的文件可能是硬链接的情况下确定目录的大小,这可能导致你认为 WinSxS 文件夹占用的磁盘空间较多,然而实际上并非如此。
DISM 包含的功能可以确定 WinSxS 文件夹真正使用的磁盘空间量。
示例:
DISM /Image:C:\test\offline /Cleanup-Image /AnalyzeComponentStore
Dism /Online /Cleanup-Image /AnalyzeComponentStore
2.1 AnalyzeComponentStore
> Dism /Online /Cleanup-Image /AnalyzeComponentStore
输出示例:
部署映像服务和管理工具 版本: 10.0.26100.5074
映像版本: 10.0.26200.7171
[==========================100.0%==========================]
组件存储(WinSxS)信息:
Windows 资源管理器报告的组件存储大小 : 10.50 GB
组件存储的实际大小 : 6.51 GB
已与 Windows 共享 : 4.05 GB
备份和已禁用的功能 : 2.18 GB
缓存和临时数据 : 266.95 MB
上次清理的日期 : 2025-11-15 15:32:42
可回收的程序包数 : 2
推荐使用组件存储清理 : 是
操作成功完成。
2.2 查看可清理的组件
可以通过以下方法检查 WinSxS 组件存储的状态,看看是否真的仍有可清理的组件:
Get-WindowsPackage -Online | Where-Object { $_.PackageState -eq "Superseded" }
输出示例:
PackageName : Microsoft-Windows-FodMetadataServicing-Desktop-Metadata-Package~31bf3856ad364e35~amd64~~10.0.26100.6584
PackageState : Superseded
ReleaseType : FeaturePack
InstallTime : 2025/9/15 19:47:00
PackageName : Package_for_DotNetRollup_481~31bf3856ad364e35~amd64~~10.0.9319.1
PackageState : Superseded
ReleaseType : Update
InstallTime : 2025/9/15 19:36:00
PackageName : Package_for_KB5054156~31bf3856ad364e35~amd64~~26100.5503.1.1
PackageState : Superseded
ReleaseType : Update
InstallTime : 2025/9/15 19:35:00
3. 清除 WinSxS 文件夹
/Cleanup-Image /StartComponentCleanup [/ResetBase [/Defer]]
参数说明:
- 使用
/StartComponentCleanup清理已取代的组件。类似于在任务计划程序上运行 StartComponentCleanup 的结果。 - 使用
/ResetBase重置已取代组件的基址,这可以进一步减小组件存储的大小。 - 将
/Defer与/ResetBase结合使用,可以将耗时较长的清理操作延迟到下次自动维护。 - 将
/ResetBase和/StartComponentCleanup参数一起使用,将删除组件存储区中每个组件的所有替换版本。
警告! 在执行 /StartComponentCleanup 和 /ResetBase 操作完成后,已安装的 Windows 更新将无法卸载。
示例:
DISM /Image:C:\test\offline /Cleanup-Image /StartComponentCleanup
Dism /online /Cleanup-Image /StartComponentCleanup
Dism /online /Cleanup-Image /StartComponentCleanup /ResetBase
3.1 StartComponentCleanup
> Dism /online /Cleanup-Image /StartComponentCleanup
输出:
操作成功完成。
完成后再次运行: (未检测到组件存储损坏。)
4. 删除安装服务包期间创建的所有备份文件
/Cleanup-Image /spsuperseded [/hidesp]
参数说明:
- 使用
/SPSuperseded参数可删除安装服务包期间创建的所有备份文件。(删除过时更新) 主要用于减小组件存储(WinSxS 文件夹)的大小。 - 使用
/HideSP参数可阻止服务包出现在操作系统的已安装更新列表中。
警告! /SPSuperseded 操作完成后,无法卸载该服务包。
示例:
DISM.exe /Image:C:\test\offline /Cleanup-Image /spsuperseded /hidesp
4.1 spsuperseded
DISM /Online /Cleanup-Image /spsuperseded
输出:
Service Pack 清理无法继续: 找不到 Service Pack 备份文件。
操作成功完成。
5. 修复 Windows 映像
/Cleanup-Image {/CheckHealth | /ScanHealth | /RestoreHealth}
参数说明:
- 使用
/CheckHealth命令检查映像是否因进程故障而被标记为已损坏,以及损坏是否可以修复。用于快速验证系统是否健康。 - 使用
/ScanHealth命令扫描映像是否存在组件存储损坏,但不执行修复。检查系统是否损坏或缺失的文件。 - 使用
/RestoreHealth参数扫描映像是否存在组件存储损坏,然后自动执行修复操作。 - 将
/Source参数与/RestoreHealth参数一起使用,可以指定可用于修复的已知良好版本文件的位置。
示例:
DISM.exe /Online /Cleanup-Image /ScanHealth
DISM.exe /Image:c:\offline /Cleanup-Image /RestoreHealth /Source:c:\test\mount
5.1 CheckHealth
DISM /Online /Cleanup-Image /CheckHealth
输出:
可以修复组件存储。
5.2 ScanHealth
DISM /Online /Cleanup-Image /ScanHealth
输出:
可以修复组件存储。
5.3 RestoreHealth
DISM /Online /Cleanup-Image /RestoreHealth
错误输出:
错误: 0x800f0915
在任何位置都找不到修复内容。
检查 Internet 连接或使用"源"选项来指定还原映像所需的文件的位置。 有关指定源位置的详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=243077。
可以在 C:\WINDOWS\Logs\DISM\dism.log 上找到 DISM 日志文件
(默认源: Windows更新,未联网报错)
成功执行:
DISM /Online /Cleanup-Image /RestoreHealth
还原操作已成功完成。
6. 指定修复使用的来源
更多信息:
Windows 更新是默认修复源,但你可以配置组策略以指定一个或多个包含还原 Windows 功能或修复损坏的操作系统所需文件的网络位置。
作为使用 Windows 更新的替代方法,你可使用以下内容作为源:
6.1 装载的映像
可将 WIM 文件中已装载的 Windows 映像作为源来还原可选功能,并修复损坏的操作系统。
例如 c:\mount\Windows。
6.2 运行的 Windows 安装
可通过共享网络上的 c:\Windows 文件夹,将运行的 Windows 安装作为源来还原可选功能。
6.3 并排 (SxS) 文件夹
可以将网络共享或可移动介质(如 Windows 安装介质)中的 Windows 并排文件夹作为文件源。例如 z:\sources\SxS。
6.4 WIM 文件
可以将网络共享上的 Windows 映像 (.wim) 文件作为源来还原可选功能。
必须在要使用的 .wim 文件中指定 Windows 映像的索引,并且必须在路径中使用 Wim: 前缀来标识此文件格式。
示例: 要在名为 contoso.wim 的文件中指定索引 3,请键入以下内容:
Wim:\\network\images\contoso.wim:3
6.5 指定源时
- 无论源是 WIM 还是已装载的 Windows 映像,都只需使用 RTM 介质。刷新介质从介质中排除了较早的文件版本,而目标操作系统可能需要这些文件。
- 请确保将源修补到最新的累积更新。如果将目标 OS 修补为比源更高的级别,添加功能或修复操作系统可能会失败,因为目标 OS 需要的更新文件不存在于源中。
- 可使用组策略来配置首选修复源。
- 打开组策略编辑器。例如,在运行 Windows 10 的计算机上,在"开始"屏幕键入"编辑组策略",然后选择"编辑组策略"以打开组策略编辑器。
- 单击"计算机配置",单击"管理模板",单击"系统",然后双击"指定可选组件安装和组件修复的设置"。
- 选择要用于按需功能的设置。
- 使用
/LimitAccess参数可阻止 DISM 连接到 WU/WSUS。
7. 使用系统文件检查器工具修复丢失或损坏的系统文件
当关键的 Windows 系统文件丢失或损坏时,某些 Windows 功能可能无法正常工作,甚至 Windows 可能完全停止响应。如果发生这种情况,您可以使用部署映像服务和管理工具 (DISM) 和系统文件检查器工具 (SFC) 扫描系统文件,并还原任何损坏或丢失的文件。
先决条件:
DISM.exe /Online /Cleanup-image /Restorehealth
DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:C:\RepairSource\Windows /LimitAccess
步骤 2:运行系统文件检查器
在命令提示符窗口中,键入以下命令,然后按 Enter 键:
sfc /scannow
sfc /scannow 命令将扫描所有受保护的系统文件,并将损坏的文件替换为缓存副本。扫描结果将在该过程完成后显示。您可能会收到以下消息之一:
| 扫描结果消息 | 相应操作 |
|---|---|
| Windows Resource Protection did not find any integrity violations. | 找不到任何完整性冲突。您没有任何丢失或损坏的系统文件。 |
| Windows Resource Protection could not perform the requested operation. | Windows 资源保护无法执行请求的操作。若要解决此问题,请在安全模式下执行系统文件检查器扫描。确保 PendingDeletes 和 PendingRenames 文件夹位于 C:\Windows\WinSxS\Temp 下。 |
| Windows Resource Protection found corrupt files and successfully repaired them. | 发现损坏的文件并成功修复了这些文件。该操作成功完成。若要查看有关系统文件扫描和还原的详细信息,请转到如何查看系统文件检查器进程的详细信息。 |
| Windows 资源保护发现损坏的文件,但无法修复其中一些文件。 | 若要手动修复损坏的文件,请查看系统文件检查器进程的详细信息查找损坏的文件,然后手动将损坏的文件替换为已知完好的文件副本。 |
7.1 如何查看系统文件检查器进程的详细信息
查看 CBS 中包含的详细信息。日志文件,请按照以下步骤将日志中的信息复制到桌面上的可查看文本文件:
- 打开提升的命令提示符。
- 在"命令提示符"窗口中,键入以下命令,然后按 ENTER:
findstr /c:"[SR]" %windir%\Logs\CBS\CBS.log >"%userprofile%\Desktop\sfcdetails.txt"
注意: Sfcdetails.txt 文件包含每次在计算机上运行系统文件检查器工具时的详细信息。文件包括有关系统文件检查器工具未修复文件的信息。验证日期和时间项以确定该问题文件为你上次运行系统文件检查器工具时找到的文件。
7.2 如何手动将损坏的系统文件替换为已知完好的文件副本
查看日志文件以确定哪个系统文件已损坏且无法修复后,找到损坏的文件所在的位置,然后手动将损坏的文件替换为该文件的已知良好副本。
注意: 你可以从运行与你的计算机相同的 Windows 版本的另一台计算机获取系统文件的已知良好副本。你可能希望在该计算机上执行系统文件检查器进程,以确保要复制的系统文件是一个良好的副本。
步骤 1:获取损坏的系统文件的管理所有权。
在提升的命令提示符中键入以下命令,然后按 Enter:
takeown /f <Path_And_File_Name>
示例:
takeown /f C:\windows\system32\jscript.dll
步骤 2:授予管理员对损坏的系统文件的完全访问权限。
键入以下命令,然后按 Enter 键:
icacls <Path_And_File_Name> /grant administrators:F
示例:
icacls C:\windows\system32\jscript.dll /grant administrators:F
步骤 3:将损坏的系统文件替换为该文件的已知良好副本。
键入以下命令,然后按 Enter 键:
copy <Source_File> <Destination>
在上述命令中,将 <Source_File> 占位符替换为计算机上文件的已知良好副本的路径和文件名,并将 <Destination> 占位符替换为损坏的文件的路径和文件名。
示例:
copy E:\temp\jscript.dll C:\windows\system32\jscript.dll
注意: 如果上述步骤不起作用,则可能需要重新安装 Windows。有关详细信息,请参阅 Windows 中的恢复选项。