MDT Lite Touchでクリーンインストール成功でもタスク シーケンス展開が失敗する原因と対処|Windows 10 Enterprise×Windows ADK/WinPE不整合

MDT(Lite Touch)で Windows 10 Enterprise のクリーンインストールは完走するのに、タスク シーケンス展開だけ途中で失敗する――そんな時は、PowerShell スクリプトより先に MDT と Windows ADK/WinPE のバージョン不整合を疑うべきです。原因の切り分けから、確実に直す手順、再発防止までまとめます。

MDT(Microsoft Deployment Toolkit)の Lite Touch 展開では、同じ Windows 10 Enterprise でも「何も足さない新規インストール(いわゆるクリーンインストール)は最後まで通る」のに、「特定のタスク シーケンス(TS)だけが途中でエラーになって落ちる」ことがあります。特に、TS 内で既定(組み込み)アプリ削除の PowerShell スクリプト(例:RemoveApps.ps1)を追加している場合、ついスクリプト原因を疑いがちです。

しかし実務では、スクリプトそのものより前に「MDT と Windows ADK(必要なら WinPE アドオン)のバージョン不整合」が刺さっているケースが少なくありません。ADK/WinPE はブートイメージ(LiteTouchPE)や DISM、展開時のコンポーネントに直結し、組み合わせがズレると“いかにもスクリプトで落ちたように見える”失敗を引き起こします。

目次

現象を整理する(再現条件を言語化すると切り分けが速い)

まずは状況を整理します。ここが曖昧だと、ログを読んでも「何が違うのか」が見えません。

項目クリーンインストール(成功)タスク シーケンス展開(失敗)
OSWindows 10 EnterpriseWindows 10 Enterprise(同一イメージ/同一ビルド想定)
展開方式標準手順(追加カスタマイズなし)MDT Lite Touch の TS で展開
差分なしRemoveApps.ps1(既定アプリ削除)を TS 内で実行
落ちるタイミングなしWinPE/OS 適用/State Restore/PowerShell ステップなど、どこかの途中

ポイントは「同じ OS なのに TS だけ失敗する」こと。MDT の TS は、WinPE 起動→ディスク準備→WIM 適用→ドライバー/パッケージ適用→セットアップ→各種スクリプト…と工程が多く、“OS 自体が正常でも、ツールチェーンの相性で落ちる”余地があります。

結論:原因の本命は MDT と Windows ADK/WinPE のバージョン不整合

結論を先に言うと、今回のタイプのトラブルはMDT と Windows ADK(+WinPE アドオン)の組み合わせがズレていると起きやすく、正しい組み合わせへ揃えると解消することが多いです。

なぜ「不整合」で TS だけ失敗しやすいのか

  • LiteTouchPE(ブートイメージ)は ADK/WinPE から生成されるため、ADK が違うと WinPE 内の DISM/ドライバースタック/スクリプト実行環境が変わります。
  • TS は「WinPE フェーズ」と「フル OS フェーズ」をまたぐため、フェーズ間の引き継ぎ(ディスク、ドライバー、パッケージ、レジストリ、ネットワーク)で差が出ます。
  • ADK 由来のコンポーネントは、Windows 10/11 の世代差や更新に影響されやすく、“動いていたものがある日突然壊れる”典型パターンになりがちです。

不整合が疑わしい代表症状

ログ上はさまざまな形で現れますが、現場でよく見るのは次のようなパターンです。

症状よくある見え方疑うべきポイント
TS が途中で突然失敗する0x80004005 など汎用エラー、SMSTS.log の最後が曖昧ADK/WinPE の世代違い、Boot Image が古いまま
PowerShell ステップで落ちたように見えるスクリプトの戻り値が -1/1、または実行前後で環境が崩れているWinPE/フルOS切替、ExecutionPolicy、PowerShell バージョン差
WIM 適用やドライバー適用で失敗DISM の適用エラー、ストレージ/ネットワークが途切れるWinPE 側のドライバー互換、ADK が新旧混在
同じ TS なのに機種によって成功/失敗が揺れる特定モデルだけ落ちる、UEFI/RAID/NVMe 周りが怪しいWinPE に入っているドライバー・ストレージスタック・署名

最短で直す:MDT/Windows ADK(+WinPE)を「正しい組み合わせ」に揃える

対処はシンプルで、やることは大きく 3 つです。

  • MDT/Windows ADK/WinPE アドオンを対象 OS に合う組み合わせへ更新・入れ替え
  • Deployment Share を更新し、ブートイメージ(LiteTouchPE)を再生成(可能なら完全再生成)
  • PXE(WDS)や USB/ISO メディア側のブートイメージも必ず差し替えて再実行

手順の全体像(作業漏れが起きやすいので一覧化)

手順やること目的よくある落とし穴
1現在の MDT/ADK/WinPE のバージョンを棚卸しズレの有無を把握する「ADK は入っている」だけで安心し、WinPE アドオンの世代が違う
2対象 OS(Windows 10 Enterprise)のビルドに合わせて、正しい ADK/WinPE を用意互換性を担保するWindows 11 向け ADK を流用して混在させる、複数世代を共存させる
3Deployment Share を Update(完全再生成推奨)LiteTouchPE を作り直す更新だけで済ませ、実際に起動しているブートイメージが古いまま
4WDS/PXE・USB・ISO の boot.wim を差し替え現場端末が新しい WinPE で起動するようにするWDS の既存イメージを削除せず、古い方で起動してしまう
5同一条件で TS を再実行し、ログを保存改善の確認成功した端末だけ見て「直った」と判断し、再現しやすい端末で確認しない

棚卸しで最低限確認したいポイント

GUI だけでも確認できますが、チームで共有するなら PowerShell で“記録に残る”形にするのがおすすめです。

# 例:ADK のインストール状況や、主要コンポーネントの存在をざっくり確認
Get-ChildItem "C:\\Program Files (x86)\\Windows Kits\\10" -ErrorAction SilentlyContinue | Select-Object FullName

# 例:MDT のインストール確認(インストール済みプログラムでも可)
Get-ItemProperty "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*" |
  Where-Object { $_.DisplayName -match "Microsoft Deployment Toolkit" } |
  Select-Object DisplayName, DisplayVersion

ここで重要なのは「バージョン番号を覚えること」よりも、MDT・ADK・WinPE が同じ世代として揃っているかを確認することです。揃っていない場合、まずは揃えるのが最短ルートになります。

“ブートイメージの再生成”が本体:Deployment Share 更新と PXE/メディア差し替え

ADK/WinPE を入れ替えただけでは直りません。MDT は Deployment Share から LiteTouchPE を生成して配布するため、ブートイメージを作り直し、さらに端末がそれで起動する状態まで持っていく必要があります。

  • MDT Workbench で Deployment Share を右クリック → Update Deployment Share
  • 可能なら Completely regenerate the boot images(完全再生成)を選ぶ
  • 生成された LiteTouchPE_x64.wim / LiteTouchPE_x64.iso を、運用している配布経路に合わせて反映する
配布経路差し替えるもの確認ポイント
WDS(PXE)LiteTouchPE_x64.wim(Boot Images)PXE 起動時に表示されるブートイメージ名が想定どおりか
USB メディアISO から作り直す/boot.wim を差し替える古い USB が現場に残っていないか(事故率が高い)
ISO 配布LiteTouchPE_x64.iso配布場所・ファイル名が変わっていないか

現場でありがちなのが「Deployment Share は更新したのに、WDS の boot.wim を差し替え忘れて旧 WinPE で起動している」パターンです。端末が“どの WinPE で起動したか”を確認できる仕掛け(背景のバージョン表示、起動時のメッセージ、ログ保存のルール化)を持っておくと、再発時の切り分けが速くなります。

ログで切り分ける:ADK/WinPE 不整合か、スクリプト失敗か

同系統のトラブルでは、まず MDT のログ(例:BDD.log / SMSTS.log)で、失敗箇所が「PowerShell ステップ」なのか「WinPE/適用フェーズ」なのかを見て、原因の当たりを付けるのが近道です。

見るべきログと“置き場所”の目安

ログ主な内容よくある保存先(目安)最初に探すキーワード
SMSTS.logTS 実行の中心ログ(成功/失敗の起点)X:\\MININT\\SMSOSD\\OSDLOGS または X:\\SMSTSLog(WinPE)
C:\\MININT\\SMSOSD\\OSDLOGS または C:\\_SMSTaskSequence\\Logs(OS 適用後)
Return code / Failed / ZTI / DISM
BDD.logMDT 全体の処理ログ(設定・Gather・スクリプト連携)X:\\MININT\\SMSOSD\\OSDLOGS または C:\\MININT\\SMSOSD\\OSDLOGS
(完了後に C:\\Windows\\Temp\\DeploymentLogs へコピーされる構成も多い)
ERROR / ZTIGather / ZTIConfigure
ZTIGather.logCustomSettings.ini や DB からの設定取得同上Property / Failed to find / Warning
ZTIUtility.log共通ユーティリティ(再起動/ファイル操作など)同上Exit / Return / Copy

ログ閲覧はメモ帳でもできますが、行数が多いので CMTrace のようなログビューアを使うと「エラー行の前後」を追いやすくなります。TS の失敗は“最後の 20 行だけ見ても分からない”ことが多いので、失敗時刻の少し前から追いかけてください。

切り分けの考え方(最初の 15 分で当たりを付ける)

  • WinPE フェーズ(OS 適用前後)で落ちる → ADK/WinPE、ストレージ/ネットワークドライバー、WIM 適用(DISM)を優先的に疑う
  • フル OS フェーズの PowerShell ステップで落ちる → RemoveApps.ps1 の戻り値、権限、対象アプリ、実行タイミングを疑う(ただし WinPE 起因で環境が崩れている可能性も残す)
  • 同じステップ名で落ちたり落ちなかったりする → 依存関係(ネットワーク共有、サービス起動待ち、UAC、再起動タイミング)やバージョン不整合を疑う

RemoveApps.ps1 を TS に入れている場合の注意点(“二次障害”を防ぐ)

今回の結論は「MDT と ADK/WinPE の不整合」ですが、環境を揃えたあとに RemoveApps.ps1 が新たな失敗要因になることもあります。特に“既定アプリ削除”は、Windows の更新や SKU によって対象が変わりやすいので、TS へ組み込むなら設計のコツがあります。

TS 内で実行するなら、最低限ここを押さえる

チェック項目推奨理由
実行フェーズフル OS(State Restore 以降)で実行WinPE では AppX 系の操作が制限され、ログも追いにくい
実行方法powershell.exe -NoProfile -ExecutionPolicy Bypass -FileExecutionPolicy やプロファイル影響で失敗しにくい
削除方式「ユーザーに入っている AppX」だけでなく、Provisioned(新規ユーザー向け)も削除新規ユーザー作成で復活する“あるある”を防げる
戻り値失敗時でも要件に応じて 0 を返す設計を検討「削除できなかった=OS 展開停止」にするかは運用次第
ログスクリプト内で ログファイルへ追記するSMSTS.log だけだと何を消したか追えない

コマンド例(TS の「コマンド ラインの実行」で呼び出す)

powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%SCRIPTROOT%\\RemoveApps.ps1"

スクリプトの“止まり方”を制御する例(要件に合わせて調整)

「アプリが見つからない」「既に削除済み」などは、運用上は正常系として扱いたいことがあります。TS を止める/止めないの判断が曖昧だと、端末ごとに成功率が揺れます。

# 例:RemoveApps.ps1 内の考え方(概念例)
# - 失敗させたい条件だけ exit 1
# - それ以外はログして exit 0

try {

# 削除処理...

# Remove-AppxProvisionedPackage / Remove-AppxPackage など

exit 0
}
catch {

# “致命的な失敗”にしたい場合だけ exit 1 へ

# 例:必要な管理ツールが無い、権限が無い、DISM が壊れている等

exit 1
}

安定運用のコツ:既定アプリ削除は“参照イメージ側”に寄せる

既定アプリ削除は、TS 実行中に毎回やるよりも、参照イメージ(リファレンス イメージ)を作る段階で削除 → 新しい OS イメージを作成 → 新しい TS で展開の方が安定しやすいです。理由は単純で、TS の可動部が減り、失敗点が減るからです。

代表的な 3 方式(メリット/デメリットで選ぶ)

方式タイミングメリットデメリット向くケース
参照イメージで削除してキャプチャBuild & Capture(事前)展開が速い/失敗点が減る/検証しやすい参照イメージの管理が必要(更新/再キャプチャ)台数が多い、標準化が強い現場
オフライン WIM に対して削除(DISM)イメージ整備(事前)ユーザー作成前に Provisioned を削除できる作業ミスで WIM を壊すリスク、手順の自動化が必要“このアプリだけ絶対いらない”が明確な現場
TS 後(初回ログオン後)に削除展開後(事後)TS をシンプルに保てる/柔軟に制御できる初回起動時に処理が走る/ユーザー体験に影響端末ごとに削除方針が異なる現場

オフライン削除のイメージ(Provisioned Appx を消す考え方)

“インストール済みアプリ(ユーザー単位)”を消すだけだと、新規ユーザーで復活することがあります。そこで、OS イメージ側の Provisioned Appx を消す考え方が有効です。ここでは概念が伝わる範囲で例を示します(実運用では対象アプリを厳選し、検証環境での確認が必須です)。

# オンライン(展開後)で Provisioned を確認する例
Get-AppxProvisionedPackage -Online | Select-Object DisplayName, PackageName

# オンラインで Provisioned を削除する例(対象 PackageName を指定)
Remove-AppxProvisionedPackage -Online -PackageName "(PackageName をここに)"

削除対象を増やし過ぎると、ストア更新や一部の機能(依存関係)に影響することがあります。「何を消すか」より「何を残すか」を先に決め、業務要件(社内アプリ、ストア利用有無、UWP 依存の機能)とセットで設計するのが安全です。

それでも直らないときの追加チェック(現場で効く順)

ADK/WinPE を揃えてブートイメージも更新したのに落ちる場合、次の順で見ていくと詰まりにくいです。

TS を“最小構成”にして原因を絞る

  • RemoveApps.ps1 を一旦外し、標準の「OS 適用+基本設定」だけで完走するかを見る
  • 完走するなら、RemoveApps.ps1 を戻して「落ちるならどのアプリがトリガーか」を追う
  • 完走しないなら、スクリプトではなく WinPE/ドライバー/ネットワーク/ディスク周りへ戻る

ストレージ/ネットワークドライバー(WinPE 側)の見直し

  • UEFI/RAID/NVMe を使う端末では、WinPE がストレージを正しく認識できないと、途中で“見えたり見えなかったり”します。
  • モデル混在環境では「OS 側のドライバー」だけでなく、WinPE に注入されているドライバーも要チェックです。

共有フォルダ到達性と権限(地味に多い)

  • TS 中のスクリプトやアプリ配布がネットワーク共有に依存している場合、認証・SMB 設定・証明書・名前解決の揺れで落ちます。
  • 特に “途中で” 落ちる場合は、ネットワーク断や NIC ドライバーの再初期化が絡むことがあります。

再発防止:バージョン整合を運用ルール化する

今回の原因がバージョン不整合だった場合、直した瞬間は快適でも、半年〜1年後に同じ形で再発しやすいです。運用ルールとして次を決めておくと、トラブル対応の時間が大幅に減ります。

  • OS のビルド更新(例:機能更新/大型更新)と同じタイミングで ADK/WinPE の見直しを行う
  • ADK/WinPE を更新したら、必ずDeployment Share の完全再生成→WDS/メディア差し替えまでをセットで実施
  • 成功端末のログを保管し、失敗時は差分比較できるようにする
  • RemoveApps.ps1 などのカスタムは、対象 OS ビルドごとにテストし、対象アプリ一覧もバージョン管理する

運用メモとして残すと便利な項目

項目記録例理由
MDT のバージョンDisplayVersionADK との組み合わせ検討の起点になる
ADK/WinPE のバージョンインストール日+製品バージョン「いつから壊れたか」を追える
LiteTouchPE の更新日WIM のタイムスタンプ端末が新しい WinPE で起動しているか確認できる
TS の変更履歴RemoveApps.ps1 追加/変更日“何を変えたら壊れたか”が一目で分かる

まとめ:最初に疑うのはスクリプトより「MDT×ADK/WinPE の組み合わせ」

「クリーンインストールは成功するのに、タスク シーケンス展開だけ失敗する」ケースは、PowerShell の 1 行よりも、まずMDT と Windows ADK/WinPE のバージョン整合が鍵になることが多いです。

  • MDT/ADK(+WinPE)を対象 OS に合う組み合わせへ揃える
  • Deployment Share を更新し、LiteTouchPE を完全再生成する
  • PXE/メディア側のブートイメージまで差し替え、“新しい WinPE で起動している”状態で再実行する
  • 既定アプリ削除は参照イメージ側に寄せると、展開の安定度が上がる

この 4 点を押さえるだけで、同種の MDT トラブルは“根本から”収束しやすくなります。ログ(BDD.log / SMSTS.log)を味方に、まずはどのフェーズで落ちているかを特定し、再現性のある形で改善していきましょう。

この記事を書いた人

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

コメント

コメントする

目次