日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

Windows 11をMDTでSysprep/キャプチャできない原因と解決策|WinPEでC:が付かない不具合の恒久対処と自動化手順

MDT の「Sysprep & Capture」で Windows 11 をキャプチャしようとすると、Sysprep 後に再起動し WinPE に戻った段階でウィザードが再表示され、キャプチャが進まない――この現場で多発する不具合を、原因の仕組みから対処手順、再発防止の自動化、運用設計までまとめて解説します。作業者がそのままコピペで使えるスクリプトとチェックリストも掲載します。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

発生している事象(現場の症状)

  • Windows 11 をインストールした母艦(物理/仮想どちらでも)で MDT の 「Sysprep & Capture」タスク シーケンスを実行すると、Sysprep は成功するが、再起動後に WinPE で「どのタスク シーケンスを実行しますか?」が再度表示され、キャプチャが始まらない。
  • MDT の監視コンソールでは進捗が 60〜70% 付近で停止→ロールバック。
  • 同じ手順で Windows 10 は完了する。

原因の概要(なぜ止まるのか)

Windows 11 用 ADK / WinPE(例:19041 系、22000 系の一部ビルド)で生成したブート イメージでは、特定条件で OS パーティションにドライブ文字(通常 C:)が割り当てられない事象が発生します。ドライブ文字がないと LTICapture.wsf(MDT のキャプチャ スクリプト)が OS を検出できず、キャプチャ段階へ進めません。

技術的には WinPE のボリューム自動マウント挙動(Automount / SAN Policy)やパーティション メタデータの解釈が絡み、以下のいずれか/複合で再現します。

  • UEFI/GPT 構成で OS(Basic Data)パーティションに文字が付かない。
  • Automount が無効、あるいは SAN Policy によりオフライン扱い。
  • 複数ディスク・VHD・NVMe/SCSI の組合せでボリューム列挙順が変動。

結果として WinPE で C: が存在せず、Wizard が「新規展開」と誤認→タスク シーケンス選択画面に戻る、という挙動になります。

まずは最短で復旧する(手動の回避策)

現場で止まったら、以下の手順で数分で復旧できます。

  1. WinPE のタスク シーケンス選択画面で F8(コマンド プロンプト)を開く。
  2. diskpart で OS パーティションに C: を割り当てる。
diskpart
list disk
select disk 0
list partition           ← OS が入った番号を確認(例:3)
select partition 3
assign letter=C
exit

続けて、同じコンソールで以下を実行します。

startnet.cmd

停止していたキャプチャ シーケンスが再開し、*.wim の取得まで進みます。

自動化して再発させない(WinPE 起動時に修正をかける)

毎回手で対処するのは非効率です。WinPE 起動直後に「C: を付け、ネットワークを初期化してから MDT を起動」するよう仕込めば再発をブロックできます。方法は大きく二つです。

方法 A:バッチ + DiskPart(最小・高速・依存最少)

OS パーティションが「ディスク 0 の最大 NTFS ボリューム」である前提を利用して割り当てます。堅牢性は PowerShell 版に劣るものの、WinPE に追加コンポーネント不要で軽量です。

1) FixDriveLetter.txt(DiskPart スクリプト)

select disk 0
automount enable
online disk
list volume
rem ★ 注意:次の行は環境により調整。標準的な UEFI/GPT 構成では OS は「最大の NTFS」。
rem 例)よくある構成では OS は Volume 3 や 4 になる。
select volume 3
assign letter=C override
exit

2) FixDriveLetter.cmd(バッチ)

@echo off
wpeutil InitializeNetwork
rem ネットワーク初期化の安定待ち(約15秒)
ping -n 16 127.0.0.1 >nul
rem Automount/SAN の癖を先に矯正
mountvol /E
diskpart /s X:\Scripts\FixDriveLetter.txt

3) 実装手順(MDT ブート イメージに組み込む)

  1. MDT の DeploymentShare 配下に ExtraFiles\Scripts フォルダを作成し、上記 2 ファイルを配置。
  2. Deployment Share のプロパティ → Windows PE タブ → GeneralExtra directory to addExtraFiles を指定。
  3. 同タブの CustomizationsPrestart commandcmd.exe /c X:\Scripts\FixDriveLetter.cmd を設定(ウィザード起動前に実行されます)。
  4. Update Deployment Share完全再生成(Completely regenerate boot images) → WDS/USB のブート イメージを差し替え。

注意:DiskPart で OS ボリュームの番号が毎回変わる環境では、後述の PowerShell 版を推奨します。

方法 B:PowerShell で OS パーティションを動的特定(堅牢)

Windows PE に PowerShell/WMI を組み込み、GPT の Basic Data(EBD0A0A2-B9E5-4433-87C0-68B6B72699C7)かつ未割り当ての最大パーティションを自動検出して C: にします。

前提:MDT の WinPE に「Windows PowerShell」「WMI」「Scripting」オプション コンポーネントを追加(Deployment Share → Windows PE → Features でチェック)。

FixDriveLetter.ps1

Start-Transcript -Path X:\FixDriveLetter.log -Append
wpeutil InitializeNetwork
Start-Sleep -Seconds 15

# 最初のオンラインディスクを取得

$disk = Get-Disk | Where-Object { $*.PartitionStyle -ne 'RAW' -and $*.OperationalStatus -eq 'Online' } |
Sort-Object Number | Select-Object -First 1

if ($null -ne $disk) {
# GPT の Basic Data かつ未割り当ての最大パーティション(なければ NTFS/BASIC の最大)
$osPart = Get-Partition -DiskNumber $disk.Number |
Where-Object { (-not $*.DriveLetter) -and ($*.GptType -eq '{EBD0A0A2-B9E5-4433-87C0-68B6B72699C7}' -or $_.Type -eq 'Basic') } |
Sort-Object -Property Size -Descending |
Select-Object -First 1
if ($osPart) {
try {
Set-Partition -DiskNumber $disk.Number -PartitionNumber $osPart.PartitionNumber -NewDriveLetter 'C' -ErrorAction Stop
} catch {
# Automount を明示的に有効化して再試行
& diskpart /s X:\Scripts\EnableAutomount.txt | Out-Null
Start-Sleep -Seconds 2
Set-Partition -DiskNumber $disk.Number -PartitionNumber $osPart.PartitionNumber -NewDriveLetter 'C' -ErrorAction SilentlyContinue
}
}
}
Stop-Transcript 

EnableAutomount.txt

automount enable
online disk
exit

PowerShell ランチャ(Prestart 指定用)

powershell.exe -ExecutionPolicy Bypass -File X:\Scripts\FixDriveLetter.ps1

あとは方法 A と同様に ExtraFiles へ配置し、Prestart に上記ランチャを設定してブート イメージを完全再生成します。

スタートアップ順序の最適化(ネットワークと MDT の起動)

共有へ直接キャプチャする構成では、資格情報ダイアログが固まる/無反応になることがあります。これは WPEinit より前にスクリプトが動くためです。以下を徹底してください。

  • wpeutil InitializeNetwork を必ず最初に実行。
  • 10〜20 秒の待機(ping 127.0.0.1 の遅延で簡易実装)。
  • 必要に応じて IP 確認 ipconfig、共有接続 net use \\server\share /user:xxx *

最新 ADK/WinPE への更改(根本対応候補)

Microsoft から新ビルドの Windows 11 ADK/WinPE が出たら更新を検討します(2025年11月時点でも一部ビルドに同様の報告があるため、自動ドライブ付与の回避策は併用を推奨)。

  1. 旧 ADK → 旧 WinPE アドオンを アンインストール
  2. 新 ADK → 新 WinPE アドオンを この順でインストール
  3. MDT で Update Deployment ShareCompletely regenerate
  4. WDS の Boot 画像差し替え、メディア(USB)再作成。

ログで一致判定する(原因切り分け)

停止原因が「C: が見つからない」であることをログで確認します。

  • X:\MININT\SMSOSD\OSDLOGS\smsts.log
  • X:\MININT\Scripts\BDD.log

キーワード例:Failed to find OS volumeLTICaptureIsOSOnline=FalseDrive C not found など。該当すれば本稿の事象に合致します。

設定見直しポイント(直接原因ではないが必ず確認)

  • CustomSettings.iniOSInstall=YES があること。
  • キャプチャ用タスクシーケンスで DoCapture=YES(ウィザードで指定でも可)。
  • BitLocker は 必ず一時中断manage-bde -protectors -disable C:)。
  • ドライバ:WinPE がストレージ/ネットワークを認識しているか(drvload で一時適用も可)。

現場で役立つ早見表

目的コマンドポイント
ディスクとボリューム確認diskpart → list disk / list volOS らしき最大 NTFS を探す
Automount 有効化mountvol /E または diskpart → automount enableWinPE での自動割当てを回復
ネットワーク初期化wpeutil InitializeNetwork資格情報ダイアログのフリーズ防止
MDT の再開startnet.cmdウィザードと TS 起動
共有へ接続net use \\server\share /user:USER *キャプチャ先が共有の場合

UEFI/MBR 別の一般的なパーティション例

構成典型パーティションOS パーティション例
UEFI / GPTEFI(100〜300MB), MSR(16MB), Windows(C:), 回復3 番(最大 NTFS)
BIOS / MBRシステム予約(100MB), Windows(C:), 回復2 番(最大 NTFS)

よくある質問と落とし穴

  • Q. 2 台以上ディスクがあるときは?
    A. まず OS ディスクを決め打ちしたい場合は BIOS/UEFI でブート順を確認。スクリプトでは Disk 0 を対象にするか、PowerShell で「Windows フォルダ(\Windows\System32)の存在」を基準に検出するロジックに拡張します。
  • Q. たまに D: など別文字が付く。
    A. assign letter=C override を使い、既存の C: を強制的に付け替えます。回復や EFI を誤って C: にしないよう、対象の サイズとファイルシステムを必ず確認。
  • Q. 共有へ直接キャプチャ時に固まる。
    A. wpeutil InitializeNetwork → 15 秒待機 → net use の順で安定します。
  • Q. Sysprep 自体が失敗する。
    A. 本稿は「Sysprep は成功するがキャプチャに進まない」ケースの対処です。Sysprep 失敗は別要因(プロビジョニング済み UWP、更新プログラムのタイミング等)を切り分けてください。

DISM での手動キャプチャ(最終手段)

MDT の再開が難しい場合、DISM で直接 WIM を取得できます。

  1. 前述の手順で OS に C: を割り当て。
  2. 共有をマウント: net use Z: \\server\share /user:USER *
  3. キャプチャ: dism /Capture-Image /ImageFile:Z:\Win11-Std-YYYYMMDD.wim ^ /CaptureDir:C:\ /Name:"Win11-Std-YYYYMMDD" /Compress:max /CheckIntegrity /Verify

MDT へは Operating Systems → Import Operating System → Custom image file として登録し、展開時に setup.exe 参照のための Full set of source files と組み合わせるか、Answer File 側でドライバ/言語パック調整を行います。

スタートアップ シーケンスに組み込む設計例(テンプレート)

以下は「WinPE 起動 → ネットワーク初期化 → C: 付与 → MDT 起動」の標準テンプレです。ExtraFilesX:\Scripts に格納し、startnet.cmd をオーバーレイする方法でも実装できます。

startnet.cmd(オーバーレイ例)

@echo off
wpeinit
wpeutil InitializeNetwork
ping -n 16 127.0.0.1 >nul

rem C: を確実に付与(PowerShell が無ければ DiskPart 版に差し替え)
if exist X:\Scripts\FixDriveLetter.ps1 (
powershell.exe -ExecutionPolicy Bypass -File X:\Scripts\FixDriveLetter.ps1
) else (
mountvol /E
diskpart /s X:\Scripts\FixDriveLetter.txt
)

rem MDT を起動
cscript.exe X:\Deploy\Scripts\LiteTouch.wsf 

MDT の「Prestart」でも同様の順序を実現できます。現場では Prestart:簡単・安全、startnet オーバーレイ:柔軟・強力 と覚えておくと迷いません。

運用チェックリスト(配布前の最終確認)

  • ブート イメージ:完全再生成で作り直したか。
  • WinPE 機能:PowerShell/WMI/Scripting の要否判断と最小追加。
  • Prestart / startnet:ネットワーク初期化 → C: 付与 → MDT 起動の順序になっているか。
  • スクリプト:共有名やボリューム番号などのハードコードを排除したか。
  • 対象機種:物理・Hyper‑V(Gen1/Gen2)ともに実機検証したか。
  • BitLocker:キャプチャ前に保護中断したか。
  • ログ:smsts.log / BDD.log の保存先リダイレクトと保全。

トラブル復旧フロー(まとめ図)

ステップ判定/作業次のアクション
1WinPE で F8 → list volC: がある?無ければ手動で assign letter=Cstartnet.cmd
2再発防止の自動化が仕込まれている?無ければ Prestart(または startnet オーバーレイ)を導入
3共有でフリーズ?wpeutil InitializeNetwork + 待機を先頭に追加
4まだ再現?最新 ADK/WinPE に更改し、ブートを完全再生成
5緊急でイメージが必要DISM で手動キャプチャ → 後で MDT へ取り込み

実運用でのベストプラクティス

  • 「起動後に必ず C: を保証」するプリフックを WinPE に常備(最重要)。
  • スクリプトは ログを残すX:\FixDriveLetter.log など)。再現時の一次解析が容易になります。
  • ブート イメージ差し替えの度に WDS 側の古い参照を削除(重複参照で旧版が起動する事故を防止)。
  • Hyper‑V の場合は Gen2 + UEFI を基本に、セキュアブート有効で検証。SCSI/NVMe のドライバ可視性もチェック。
  • キャプチャ先がネットワークの場合は、帯域・遅延・スリープの影響を評価(有線推奨、電源ポリシー固定)。

結論

本不具合の本質は「WinPE が OS パーティションにドライブ文字を付けない」ことにあります。最短の現場回避は DiskPart で C: を付与して startnet.cmd を叩くこと。再発防止と無人化には、WinPE 起動直後に ネットワーク初期化 → C: 付与 → MDT 起動を行う Prestart(もしくは startnet オーバーレイ)を常設してください。最新 ADK/WinPE への更改も検討しつつ、現行運用では「C: を保証するスクリプト」を標準化するのが最も確実です。


付録:サンプル構成(そのまま流用可)

フォルダ配置(DeploymentShare 直下)

.\ExtraFiles\
  └─ Scripts\
       ├─ FixDriveLetter.cmd
       ├─ FixDriveLetter.txt
       ├─ FixDriveLetter.ps1   (PowerShell 併用時)
       └─ EnableAutomount.txt

Prestart 設定(いずれか)

  • バッチ版: cmd.exe /c X:\Scripts\FixDriveLetter.cmd
  • PowerShell 版: powershell.exe -ExecutionPolicy Bypass -File X:\Scripts\FixDriveLetter.ps1

CustomSettings.ini(抜粋例)

[Settings]
Priority=Default
Properties=MyCustomProperty

[Default]
OSInstall=YES
SkipCapture=NO
DoCapture=YES
SkipTaskSequence=NO 

トラブル時の確認ログ

X:\MININT\SMSOSD\OSDLOGS\smsts.log
X:\MININT\Scripts\BDD.log

ケース別のポイント(短評)

  • 物理 PC:ベンダ独自ストレージドライバが WinPE に必要な場合あり。ブート イメージに注入(Drivers に登録し、Selection Profile を WinPE に適用)。
  • Hyper‑V:Gen2+UEFI で基本安定。複数 VHDX を接続しているとボリューム順が変わるため PowerShell 版推奨。
  • USB キャプチャ:大容量 USB へ直接保存する場合も、Automount を有効化してから diskpart を実行。書き込み速度のばらつきに注意。

チェックサマリー(要点表)

要点アクション効果
WinPE で C: を保証Prestart で DiskPart/PowerShell 実行キャプチャ段階へ必ず進む
ネットワーク初期化wpeutil InitializeNetwork + 待機共有接続のフリーズ防止
ADK/WinPE 更新旧版アンインストール → 新版インストール → ブート完全再生成将来の恒久対応の可能性
ログで一致判定smsts.log / BDD.log を精読誤診防止・再発時の迅速化

以上をテンプレ化しておけば、Windows 11 の Sysprep/Capture 案件は安定運用へ移行できます。現場では「起動直後に C: を付与」さえ徹底すれば、ほぼすべての類似トラブルを未然に防げます。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次