- 概述
- 变量记法
- 步骤 1:目标指定(/Online 或 /Image)
- 步骤 2:查看 Windows 功能(/Get-Features, /Get-FeatureInfo)
- 步骤 3:启用/禁用功能(/Enable-Feature, /Disable-Feature)
- 步骤 4:查看 Capabilities(/Get-Capabilities, /Get-CapabilityInfo)
- 步骤 5:添加/删除 Capabilities(/Add-Capability, /Remove-Capability)
- 步骤 6:映像修复与组件存储管理(/Cleanup-Image)
- 步骤 7:查看镜像信息(/Get-ImageInfo)
- 步骤 8:离线映像挂载与卸载
- 步骤 9:集成驱动、更新包与语言包
- 步骤 10:捕获、导出与应用映像
- 步骤 11:PowerShell 对应命令
- 总结
概述
本文并行讲解 DISM(Deployment Image Servicing and Management) 与 PowerShell(DISM API 的封装),按主题整理常用操作、关键选项与可复制的执行示例。
变量记法
| 变量 | 示例 | 说明 |
|---|---|---|
<<IMAGE_PATH>> |
C:\mount 或 E:\Windows |
供 /Image: 指定的离线 Windows 路径(已挂载目录或其他磁盘上的 Windows 目录) |
<<FEATURE_NAME>> |
NetFx3 |
Windows 功能名 |
<<CAPABILITY_NAME>> |
OpenSSH.Client~~~~0.0.1.0 |
OS 扩展功能名(FoD:按需功能) |
<<WIM_PATH>> |
D:\sources\install.wim |
WIM/ESD 镜像文件 |
<<INDEX>> |
1 |
镜像索引号 |
<<MOUNT_DIR>> |
C:\mount |
挂载点 |
<<DRIVER_DIR>> |
D:\drivers |
含 INF 的驱动目录 |
<<PACKAGE_PATH>> |
C:\Updates\kb5005565.cab |
更新包文件 |
<<LANG_PACK>> |
C:\LP\ja-jp\lp.cab |
语言包 CAB |
<<SOURCE_PATH>> |
D:\sources\sxs |
源文件路径(如 NetFx3) |
<<APPLY_DIR>> |
C:\ |
展开目标 |
<<SCRATCH_DIR>> |
C:\Temp\Scratch |
工作目录 |
<<LOG_PATH>> |
C:\Temp\dism.log |
日志输出路径 |
几乎所有命令均可叠加
/ScratchDir:<<SCRATCH_DIR>>与/LogPath:<<LOG_PATH>>。
步骤 1:目标指定(/Online 或 /Image)
大多数 DISM 命令需显式指定操作目标。
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
作用于当前运行的 Windows | dism /Online /Cleanup-Image /CheckHealth |
/Image:<<IMAGE_PATH>> |
作用于离线 Windows 或已挂载映像 | dism /Image:C:\mount /Add-Driver /Driver:D:\drivers /Recurse |
步骤 2:查看 Windows 功能(/Get-Features, /Get-FeatureInfo)
说明
获取可用功能列表及其状态(Enabled / Disabled / DisabledWithPayloadRemoved)。
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | dism /Online /Get-Features |
/Image:<<IMAGE_PATH>> |
离线系统 | dism /Image:C:\mount /Get-Features |
/Get-Features |
列出功能 | dism /Online /Get-Features /Format:Table |
/Get-FeatureInfo |
查看指定功能详情 | dism /Online /Get-FeatureInfo /FeatureName:NetFx3 |
/FeatureName:<<FEATURE_NAME>> |
功能名 | NetFx3 |
/Format:Table |
表格输出 | dism /Online /Get-Features /Format:Table |
示例
# 列出所有功能与状态
dism /Online /Get-Features /Format:Table
# 查看 NetFx3 详情
dism /Online /Get-FeatureInfo /FeatureName:NetFx3
若状态为
DisabledWithPayloadRemoved,说明功能文件已移除,必须提供/Source。
步骤 3:启用/禁用功能(/Enable-Feature, /Disable-Feature)
说明
启用或禁用 .NET Framework 3.5、SMB 1.0 等系统功能。
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | dism /Online /Enable-Feature /FeatureName:NetFx3 |
/FeatureName:<<FEATURE_NAME>> |
功能名 | NetFx3 |
/All |
同时启用依赖项 | |
/Source:<<SOURCE_PATH>> |
提供缺失负载的源路径 | dism /Online /Enable-Feature /FeatureName:NetFx3 /Source:D:\sources\sxs |
/LimitAccess |
不使用 WU/WSUS | |
/Enable-Feature |
启用功能 | dism /Online /Enable-Feature /FeatureName:SMB1Protocol |
/Disable-Feature |
禁用功能 | dism /Online /Disable-Feature /FeatureName:SMB1Protocol |
/LogPath:<<LOG_PATH>> |
日志路径 |
示例
# 启用 .NET Framework 3.5(使用本地介质,无需联网)
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>
# 禁用 SMB1 以提升安全性
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>
步骤 4:查看 Capabilities(/Get-Capabilities, /Get-CapabilityInfo)
说明
查看 FoD(按需功能)组件列表与状态,例如 RSAT、OpenSSH.Client、Language.Basic 等。
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | dism /Online /Get-Capabilities |
/Image:<<IMAGE_PATH>> |
离线系统 | dism /Image:C:\mount /Get-Capabilities |
/Get-Capabilities |
列出 capabilities | dism /Online /Get-Capabilities /Format:Table |
/Get-CapabilityInfo |
capability 详情 | dism /Online /Get-CapabilityInfo /CapabilityName:OpenSSH.Client~~~~0.0.1.0 |
/Format:Table |
表格输出 | dism /Online /Get-Capabilities /Format:Table |
示例
# 列出全部 FoD
dism /Online /Get-Capabilities /Format:Table
# 查看指定 capability 的详情
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>
Capabilities 可通过 Windows Update、WSUS、FoD ISO/共享等来源添加。
步骤 5:添加/删除 Capabilities(/Add-Capability, /Remove-Capability)
说明
为系统添加或移除 OpenSSH、RSAT 等 FoD。
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | dism /Online /Add-Capability |
/CapabilityName:<<CAPABILITY_NAME>> |
目标 capability | OpenSSH.Client~~~~0.0.1.0 |
/Source:<<SOURCE_PATH>> |
FoD ISO 或共享路径 | dism /Online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0 /Source:D:\ /LimitAccess |
/LimitAccess |
仅用指定源,不访问 WU/WSUS | |
/LogPath:<<LOG_PATH>> |
日志路径 |
示例
# 添加 OpenSSH.Client
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>
# 删除不需要的 RSAT 组件
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>
步骤 6:映像修复与组件存储管理(/Cleanup-Image)
说明
检测与修复 WinSxS(组件存储)损坏,并优化占用。
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | dism /Online /Cleanup-Image /CheckHealth |
/CheckHealth |
快速检查 | |
/ScanHealth |
全面扫描 | |
/RestoreHealth |
进行修复 | dism /Online /Cleanup-Image /RestoreHealth |
/Source:<<SOURCE_PATH>> |
修复所需源 | |
/LimitAccess |
不访问 WU | |
/StartComponentCleanup |
清理旧更新 | |
/ResetBase |
固化当前更新(不可回退) | |
/AnalyzeComponentStore |
分析组件存储大小 |
示例
# 快速检查
dism /Online /Cleanup-Image /CheckHealth
# 深度扫描
dism /Online /Cleanup-Image /ScanHealth
# 指定源进行修复
dism /Online /Cleanup-Image /RestoreHealth /Source:<<SOURCE_PATH>> /LimitAccess /LogPath:<<LOG_PATH>>
# 清理与固化
dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase /LogPath:<<LOG_PATH>>
步骤 7:查看镜像信息(/Get-ImageInfo)
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Get-ImageInfo |
查看 WIM/ESD 内镜像信息 | dism /Get-ImageInfo /ImageFile:install.wim |
/ImageFile:<<WIM_PATH>> |
目标 WIM 文件 | |
/Index:<<INDEX>> |
指定索引 | |
/LogPath:<<LOG_PATH>> |
日志路径 |
示例
# 查看 install.wim 的版本与索引
dism /Get-ImageInfo /ImageFile:<<WIM_PATH>> /LogPath:<<LOG_PATH>>
步骤 8:离线映像挂载与卸载
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Mount-Wim |
挂载 WIM | |
/WimFile:<<WIM_PATH>> |
源 WIM 文件 | |
/Index:<<INDEX>> |
目标索引 | |
/MountDir:<<MOUNT_DIR>> |
挂载点 | |
/ReadOnly |
只读挂载 | |
/Get-MountedWimInfo |
查看挂载状态 | |
/Unmount-Wim |
卸载 | |
/Commit |
保存变更 | |
/Discard |
放弃变更 |
示例
# 挂载以便修改
dism /Mount-Wim /WimFile:<<WIM_PATH>> /Index:<<INDEX>> /MountDir:<<MOUNT_DIR>>
# 查看挂载状态
dism /Get-MountedWimInfo
# 保存并卸载
dism /Unmount-Wim /MountDir:<<MOUNT_DIR>> /Commit
步骤 9:集成驱动、更新包与语言包
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Online |
当前系统 | |
/Image:<<MOUNT_DIR>> |
离线映像 | |
/Add-Driver |
添加驱动 | |
/Driver:<<DRIVER_DIR>> |
INF 目录 | |
/Recurse |
递归子目录 | |
/Add-Package |
添加更新/语言包 | |
/PackagePath:<<PACKAGE_PATH>> |
包路径 | |
/Set-AllIntl:ja-JP |
设置区域与语言 |
补充:
/Add-Driver仅适用于离线。/Add-Package与/Set-AllIntl可用于在线与离线。
示例
# 集成驱动
dism /Image:<<MOUNT_DIR>> /Add-Driver /Driver:<<DRIVER_DIR>> /Recurse
# 集成更新
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<PACKAGE_PATH>>
# 添加语言包并设置区域
dism /Image:<<MOUNT_DIR>> /Add-Package /PackagePath:<<LANG_PACK>>
dism /Image:<<MOUNT_DIR>> /Set-AllIntl:ja-JP
步骤 10:捕获、导出与应用映像
关键选项
| 选项 | 含义 | 示例 |
|---|---|---|
/Capture-Image |
将目录捕获为 WIM | |
/ImageFile:<<WIM_PATH>> |
输出 WIM 路径 | |
/CaptureDir:<<APPLY_DIR>> |
源目录 | |
/Name:"<名称>" |
镜像名称 | |
/Export-Image |
重新导出/压缩 WIM | |
/Apply-Image |
应用 WIM | |
/Compress:max |
最大压缩 | |
/ApplyDir:<<APPLY_DIR>> |
目标目录 |
示例
# 捕获当前系统为自定义 WIM
dism /Capture-Image /ImageFile:D:\Custom.wim /CaptureDir:<<APPLY_DIR>> /Name:"Custom Image"
# 最大压缩导出
dism /Export-Image /SourceImageFile:<<WIM_PATH>> /SourceIndex:<<INDEX>> /DestinationImageFile:D:\install_compressed.wim /Compress:max
# 应用镜像
dism /Apply-Image /ImageFile:<<WIM_PATH>> /Index:<<INDEX>> /ApplyDir:<<APPLY_DIR>>
步骤 11:PowerShell 对应命令
对照速查
| 范畴 | DISM | PowerShell | 目的 |
|---|---|---|---|
| 查看功能 | /Get-Features, /Get-FeatureInfo |
Get-WindowsOptionalFeature |
列表/详情 |
| 启用/禁用功能 | /Enable-Feature, /Disable-Feature |
Enable-WindowsOptionalFeature, Disable-WindowsOptionalFeature |
管理功能 |
| 查看 capabilities | /Get-Capabilities, /Get-CapabilityInfo |
Get-WindowsCapability |
列表/详情 |
| 添加/删除 capabilities | /Add-Capability, /Remove-Capability |
Add-WindowsCapability, Remove-WindowsCapability |
FoD |
| 查看/集成包 | /Get-Packages, /Add-Package |
Get-WindowsPackage, Add-WindowsPackage |
更新/语言包 |
| 驱动查看/集成/删除 | /Get-Drivers, /Add-Driver, /Remove-Driver |
Get-WindowsDriver, Add-WindowsDriver, Remove-WindowsDriver |
主要离线 |
| 映像信息/挂载 | /Get-ImageInfo, /Mount-Wim, /Unmount-Wim |
Get-WindowsImage, Mount-WindowsImage, Dismount-WindowsImage |
WIM 管理 |
11.1 功能(Features)
Get-WindowsOptionalFeature
| 选项 | 含义 | 示例 |
|---|---|---|
-Online |
当前系统 | Get-WindowsOptionalFeature -Online -FeatureName <<FEATURE_NAME>> |
-Path <<IMAGE_PATH>> |
离线映像 | Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> |
-FeatureName <<FEATURE_NAME>> |
指定功能名 | -FeatureName NetFx3 |
# 列出(在线)
Get-WindowsOptionalFeature -Online
# 查看(离线)
Get-WindowsOptionalFeature -Path <<IMAGE_PATH>> -FeatureName <<FEATURE_NAME>>
Enable-/Disable-WindowsOptionalFeature
| 选项 | 含义 | 示例 |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
目标选择 | Enable-WindowsOptionalFeature -Online |
-FeatureName <<FEATURE_NAME>> |
功能名 | -FeatureName NetFx3 |
-All |
包含依赖 | -All |
-Source <<SOURCE_PATH>> |
源路径 | -Source <<SOURCE_PATH>> |
# 启用(含源)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>
# 禁用(SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
11.2 扩展功能(Capabilities)
Get-WindowsCapability
| 选项 | 含义 | 示例 |
|---|---|---|
-Online |
当前系统 | Get-WindowsCapability -Online |
-Name <<CAPABILITY_NAME>> |
支持通配 | Get-WindowsCapability -Online -Name OpenSSH.* |
-Path <<IMAGE_PATH>> |
离线映像 | Get-WindowsCapability -Path <<IMAGE_PATH>> |
# 全部列表(在线)
Get-WindowsCapability -Online
# 指定查询
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
Add-/Remove-WindowsCapability
| 选项 | 含义 | 示例 |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
目标 | Add-WindowsCapability -Online |
-Name <<CAPABILITY_NAME>> |
名称 | -Name OpenSSH.Client~~~~0.0.1.0 |
-Source <<SOURCE_PATH>> |
FoD 源 | -Source <<SOURCE_PATH>> |
# 添加(在线,必要时指定源)
Add-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
# 移除
Remove-WindowsCapability -Online -Name <<CAPABILITY_NAME>>
11.3 包(更新与语言包)
Get-WindowsPackage
| 选项 | 含义 | 示例 |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
目标 | Get-WindowsPackage -Online |
-PackagePath <<PACKAGE_PATH>> |
指定包信息 | Get-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>> |
# 已安装包(在线)
Get-WindowsPackage -Online
Add-WindowsPackage
| 选项 | 含义 | 示例 |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
目标 | Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>> |
-PackagePath <<PACKAGE_PATH>> |
.cab(推荐)/.msu |
# 集成更新(在线)
Add-WindowsPackage -Online -PackagePath <<PACKAGE_PATH>>
# 集成语言包(离线)
Add-WindowsPackage -Path <<IMAGE_PATH>> -PackagePath <<LANG_PACK>>
11.4 驱动
Get-WindowsDriver
| 选项 | 含义 | 示例 |
|---|---|---|
-Online / -Path <<IMAGE_PATH>> |
目标 | Get-WindowsDriver -Path <<IMAGE_PATH>> |
-All |
显示全部驱动 | -All |
# 列出离线映像的驱动
Get-WindowsDriver -Path <<IMAGE_PATH>> -All
Add-/Remove-WindowsDriver
| 选项 | 含义 | 示例 |
|---|---|---|
-Path <<IMAGE_PATH>> |
目标映像 | Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse |
-Driver <<DRIVER_DIR>> |
INF 目录 | |
-Recurse |
递归子目录 | |
-Driver <<oem*.inf>>(Remove) |
需移除的 INF | Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf |
# 添加(离线)
Add-WindowsDriver -Path <<IMAGE_PATH>> -Driver <<DRIVER_DIR>> -Recurse
# 移除(离线)
Remove-WindowsDriver -Path <<IMAGE_PATH>> -Driver oem1.inf
重要:
Add-/Remove-WindowsDriver不支持-Online参数;实际用法为离线集成/移除。
11.5 映像信息与挂载
Get-WindowsImage
| 选项 | 含义 | 示例 |
|---|---|---|
-ImagePath <<WIM_PATH>> |
WIM/ESD 路径 | Get-WindowsImage -ImagePath <<WIM_PATH>> |
-Index <<INDEX>> |
指定索引 | -Index <<INDEX>> |
# 列出 install.wim 的全部索引
Get-WindowsImage -ImagePath <<WIM_PATH>>
Mount-/Dismount-WindowsImage
| 选项 | 含义 |
|---|---|
-ImagePath <<WIM_PATH>> |
源 WIM |
-Index <<INDEX>> |
挂载索引 |
-Path <<MOUNT_DIR>> |
挂载点 |
-ReadOnly |
只读挂载 |
-ScratchDirectory <<SCRATCH_DIR>> |
工作目录 |
-Save(Dismount) |
保存更改 |
-Discard(Dismount) |
放弃更改 |
# 挂载
Mount-WindowsImage -ImagePath <<WIM_PATH>> -Index <<INDEX>> -Path <<MOUNT_DIR>>
# 保存并卸载
Dismount-WindowsImage -Path <<MOUNT_DIR>> -Save
总结
- DISM:低层级管理 OS 组件、WIM、更新与驱动。
- PowerShell(DISM API):等效能力,便于清单化、选择性执行与自动化。
- Capabilities(FoD):按需功能(OpenSSH、RSAT、语言包等)。
