Windows 10/11ドライバーのエクスポート手順

概要

Windows11移行時や自作PC作成時にドライバーのバックアップを取っておきたい、トラブルシュートのためにドライバーパックの取得バージョンをアーカイブしておきたい時に使えるWindowsからインストール済ドライバーを一括エクスポートする手順です。エクスポートログのテキスト保存、インストール済ドライバーの一覧をテキスト保存するコマンドベースのスクリプトです。Windows11イメージ作成時に役に立てる技術の一つです。

スクリプトの設計

分岐を作り長めに書いているため、記述に少し癖があります。次のような設計にしました。

  • 実行したPCのModel名を取得してフォルダを作成しファイルを納める
  • うっかり上書きすることを避けるためにフォルダが生成されている場合は実行の確認をする
  • コマンド実行のログをテキスト保存する
  • 実行したPCにインストールされているドライバーの一覧をテキスト保存する
graph TD; A[Start Driver Export] --> B[Check if directory exists]; B -->|Yes| C[Ask to overwrite]; C -->|Y| D[Export new file]; C -->|N| E[Stop processing]; D --> F[Record list of drivers]; F --> G[Check for errors]; G -->|Errors| H[Export error message]; G -->|No errors| I[Driver export completed]; E --> J[Exit]; H --> J; I --> J; B -->|No| D;

目的

  • 展開イメージ作成時にドライバーセットがリリースされていない時に自作セットを作る
  • 自作PCでセットアップ後にドライバーセットをバックアップしておきたい

想定する読者

  • Windowsのコマンドを利用、理解できる
  • Windowsのデプロイメント作業ができる

エクスポートコマンド

下記をBATファイルとして保存します。
echo の説明は英語で書いていますので必要に応じて日本語にして頂けると使いやすいかもしれません。その時は、文字列はANSIにすると文字化しません。※コマンドの都合で一部遅延環境変数を使っています。

BAT (Batchfile)
@echo off
setlocal enabledelayedexpansion
echo ---------------------------------------
echo Start Driver Export
echo Running. Please keep waiting...
echo ---------------------------------------
set "model="
for /f "skip=1 delims=" %%a in ('wmic computersystem get model') do if not defined model set "model=%%a"
set "model=%model: =%"
set "model=%model:_=%"

if exist "C:\Drivers\%model%" (
    echo The directory C:\Drivers\%model% already exists.
    echo.
    set /p overwrite="Do you want to overwrite it? (Y/N):"
    if /i "!overwrite!"=="y" goto :yes
    if /i "!overwrite!"=="Y" goto :yes
    if /i "!overwrite!"=="n" goto :no
    if /i "!overwrite!"=="N" goto :no
    echo Invalid input. Please enter Y or N.
    pause
    EXIT
)

REM ------------ Yes Overwrite --------------
:yes
echo Yes. Export new File. Prease waiting...
md "C:\Drivers\%model%"
dism /online /export-driver /destination:"C:\Drivers\%model%" > "C:\Drivers\%model%\DriverExport_log.txt"

echo ---------------------------------------
echo Record the list of drivers installed on the PC to text using pnputil.
echo.
echo This is the reference source if you want to know the details of the OEM file name recorded in DriverExport_log.txt
echo ---------------------------------------
pnputil /enum-drivers > "C:\Drivers\%model%\DriverList.txt"

if not errorlevel 0 (
    echo "Errors occurred"
    pause
) else (
    echo "Driver export is completed"
    pause
)

REM --------------- No stop -----------------
:no
echo Processing stopped because N was selected
pause
EXIT

endlocal

インストールコマンド

補足としてエクスポートしたドライバーの活用としてインストールコマンドも少し書いておきます。

インストール方法は大きく2つに分かれます。Windowsがオンライン、オフラインでコマンドが変わります。Windowsのオンラインとは、WindowsPCを起動してサインインしている状態です。オフラインとは、起動していないWindowsをマウントしている状態です。WimをマウントしたりWindowsPEを起動してWindowsをマウントした状態です。

今回のオフライン状態の想定はWindowsOSのデプロイメントイメージ作成時です。

オンライン時

次のコマンド例では C:\drivers\ に配置しています。フォルダ内のドライバーを一括インストールできるようにワイルドカードとオプションで設定しています。PATHは環境に合わせて変更してください。
Microsoft公式 PnPUtil の例

Windowsがオンライン状態ですので、一部ドライバーは上書きに失敗する場合もあります。その場合、WindowsPEなどからPCを起動してオフライン状態でインストールするなどを検討してください。

BAT (Batchfile)
pnputil /add-driver C:\drivers\*inf /subdirs /install

オフライン時

次のコマンド例では N:\drivers に配置しています。フォルダ内のドライバーを一括インストールできるようにワイルドカードとオプションで設定しています。PATHは環境に合わせて変更してください。N: ドライブはネットワークドライブまたは、USBメモリなどをPCへ接続して用意しています。ドライブレターは適当に設定して問題ありません。
Microsoft公式 オフライン Windows イメージへのドライバー パッケージの追加と削除

BAT (Batchfile)
DISM /image:C:\ add-driver /Driver:N:\drivers /Recurse