DISMとPowerShellによるWindows機能・イメージ管理

概要

本記事では、Windows管理者が頻繁に利用する 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: Features on Demand)
<<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>> を併用可能です。


Step 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

Step 2: Windows機能の確認(/Get-Features, /Get-FeatureInfo)

概要

インストール可能な機能の一覧や状態(Enabled / Disabled / DisabledWithPayloadRemoved)を取得します。

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象 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 指定が必要です。


Step 3: Windows機能の有効化・無効化(/Enable-Feature, /Disable-Feature)

概要

.NET Framework 3.5 や SMB 1.0 などのWindows機能を有効化/無効化します。

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象 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 Windows Update や WSUS を使用しない
/Enable-Feature 指定機能を有効化 dism /Online /Enable-Feature /FeatureName:SMB1Protocol
/Disable-Feature 指定機能を無効化 dism /Online /Disable-Feature /FeatureName:SMB1Protocol
/LogPath:<<LOG_PATH>> ログ出力先を指定

使用例

# .NET Framework 3.5 (NetFx3) をオフラインで有効化
# /Sourceでインストールメディアを指定、/LimitAccessでインターネットを使用しない
dism /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:<<SOURCE_PATH>> /LogPath:<<LOG_PATH>>

# SMB1プロトコルを無効化して脆弱性対策
dism /Online /Disable-Feature /FeatureName:SMB1Protocol /LogPath:<<LOG_PATH>>

Step 4: OS拡張機能(Capabilities)の確認(/Get-Capabilities, /Get-CapabilityInfo)

概要

FoD(Features on Demand)として提供される追加コンポーネントの一覧と状態を確認します。
例:RSAT、OpenSSH.Client、Language.Basic など。

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象 dism /Online /Get-Capabilities
/Image:<<IMAGE_PATH>> オフライン環境を対象 dism /Image:C:\mount /Get-Capabilities
/Get-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

使用例

# 目的: 利用可能な拡張機能一覧を取得
dism /Online /Get-Capabilities /Format:Table

# 目的: 特定Capabilityの詳細を確認
dism /Online /Get-CapabilityInfo /CapabilityName:<<CAPABILITY_NAME>>

Capabilitiesはオンデマンド機能であり、Windows Update・WSUS・ISOなどから追加可能です。


Step 5: OS拡張機能の追加・削除(/Add-Capability, /Remove-Capability)

概要

OpenSSHやRSATツールなどのFoDを追加・削除します。

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象 dism /Online /Add-Capability
/CapabilityName:<<CAPABILITY_NAME>> 追加・削除対象の拡張機能名を指定 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 Windows UpdateやWSUSを使わず指定ソースのみ使用
/LogPath:<<LOG_PATH>> ログ出力先を指定

使用例

# 目的: OpenSSH.Clientを追加(ネットワーク経由またはISOから)
dism /Online /Add-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

# 目的: 不要なRSATツールを削除
dism /Online /Remove-Capability /CapabilityName:<<CAPABILITY_NAME>> /LogPath:<<LOG_PATH>>

Step 6: システムイメージ修復とストア管理(/Cleanup-Image)

概要

WinSxS(コンポーネントストア)の破損検出・修復・容量最適化を行います。

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象 dism /Online /Cleanup-Image /CheckHealth
/CheckHealth 破損の有無を即時確認(軽量)
/ScanHealth 詳細スキャン(完全検査)
/RestoreHealth 破損修復を実行 dism /Online /Cleanup-Image /RestoreHealth
/Source:<<SOURCE_PATH>> ソースパスを指定(オフライン修復用)
/LimitAccess Windows Updateを使用しない
/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>>

Step 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>>

Step 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

Step 9: ドライバ・パッケージ・言語パック統合

主なオプション

オプション 意味 使用例
/Online 実行中のWindowsを対象
/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

Step 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>>

Step 11: PowerShellでの対応コマンド

対応コマンド一覧

区分 DISMコマンド PowerShellコマンドレット 目的
機能(Features)取得 /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 更新/LP等の確認・統合
ドライバ取得/統合/削除 /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 実行中OSを対象 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-WindowsOptionalFeature / Disable-WindowsOptionalFeature

オプション 意味 使用例
-Online / -Path <<IMAGE_PATH>> 対象の指定 Enable-WindowsOptionalFeature -Online
-FeatureName <<FEATURE_NAME>> 機能名 -FeatureName NetFx3
-All 依存機能も同時に有効化 -All
-Source <<SOURCE_PATH>> ペイロード復元用のソース -Source <<SOURCE_PATH>>
# 有効化(NetFx3、オフラインソース使用)
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source <<SOURCE_PATH>>

# 無効化(SMB1)
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol

11.2 拡張機能(Capabilities)

Get-WindowsCapability

オプション 意味 使用例
-Online 実行中OSを対象 Get-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> ワイルドカード指定可 Get-WindowsCapability -Online -Name OpenSSH.*
-Path <<IMAGE_PATH>> オフライン対象 Get-WindowsCapability -Path <<IMAGE_PATH>>
# 一覧(オンライン)
Get-WindowsCapability -Online

# 個別(OpenSSHのみ)
Get-WindowsCapability -Online -Name <<CAPABILITY_NAME>>

Add-WindowsCapability / Remove-WindowsCapability

オプション 意味 使用例
-Online / -Path <<IMAGE_PATH>> 対象の指定 Add-WindowsCapability -Online
-Name <<CAPABILITY_NAME>> 追加/削除するCapability -Name OpenSSH.Client~~~~0.0.1.0
-Source <<SOURCE_PATH>> FoD ISO等のソース -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-WindowsDriver / 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

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-WindowsImage / 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) → 同機能をスクリプト化可能(一覧・選択・自動化に最適)
  • Capability → オンデマンド機能(OpenSSH, RSAT, 言語パック)