概要
Windows11移行時や自作PC作成時にドライバーのバックアップを取っておきたい、トラブルシュートのためにドライバーパックの取得バージョンをアーカイブしておきたい時に使えるWindowsからインストール済ドライバーを一括エクスポートする手順です。エクスポートログのテキスト保存、インストール済ドライバーの一覧をテキスト保存するコマンドベースのスクリプトです。Windows11イメージ作成時に役に立てる技術の一つです。
スクリプトの設計
分岐を作り長めに書いているため、記述に少し癖があります。次のような設計にしました。
目的
想定する読者
エクスポートコマンド
下記をBATファイルとして保存します。
echo の説明は英語で書いていますので必要に応じて日本語にして頂けると使いやすいかもしれません。その時は、文字列はANSIにすると文字化しません。※コマンドの都合で一部遅延環境変数を使っています。
@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を起動してオフライン状態でインストールするなどを検討してください。
pnputil /add-driver C:\drivers\*inf /subdirs /install
オフライン時
次のコマンド例では N:\drivers に配置しています。フォルダ内のドライバーを一括インストールできるようにワイルドカードとオプションで設定しています。PATHは環境に合わせて変更してください。N: ドライブはネットワークドライブまたは、USBメモリなどをPCへ接続して用意しています。ドライブレターは適当に設定して問題ありません。
Microsoft公式 オフライン Windows イメージへのドライバー パッケージの追加と削除
DISM /image:C:\ add-driver /Driver:N:\drivers /Recurse