使用 DISM 与 PowerShell 管理 Windows 功能与映像

概述

本文并行讲解 DISM(Deployment Image Servicing and Management)PowerShell(DISM API 的封装),按主题整理常用操作、关键选项与可复制的执行示例。

变量记法

变量 示例 说明
<<IMAGE_PATH>> C:\mountE:\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、语言包等)。