【Windows】ドライバの一括バックアップとインストール!コマンドとバッチファイルの作成例を紹介!

Windows

こんにちは!今回はインストール済みのドライバを一括でバックアップする方法と、それを復元する方法を紹介していこうと思います!

OSのクリーンインストールや、ドライバの修復等でよくドライバをバックアップするという手法が行われています。しかし、具体的にどのようにするというのはなかなか情報として無かったりすると思います。

よく行われているのはドライバのインストーラを保存しておくという手法だとは思いますが、一つ一つインストールするのは非常に時間も労力もかかります。今回紹介する方法は一括でバックアップ/インストールをする快適な方法になります。

ドライバの一括バックアップコマンド

ドライバを一括でバックアップするには下記コマンドを使用することで実現できます。

mkdir C:\Backup
dism /online /export-driver /destination:"C:\Backup"

C:\Backupの部分は保存先になりますので、任意に書き換えてください。
保存先のフォルダがない場合、エラーになりますので、mkdirで先に作成するのが良いでしょう。
このコマンドによって、すべてのサードパーティ製ドライバを保存することができます。

※ただし注意点として、付属されるユーティリティは保存されませんので、必要に応じて別途インストーラを用意する必要があるかもしれません。

例)
ディスプレイドライバの設定ソフト
プリンターのインク残量ステータスの情報モニタ
など

【参考】Microsoft DISM ドライバー サービス (.inf) のコマンド ライン オプション

https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898546(v=vs.85).aspx

ドライバの一括インストールバッチ

次に一括のインストールの方法です。
ドライバのインストールにはDismコマンドのAdd-Driverオプションや、rundll32、Devcon.exe等を使う方法がありますが、個人的にpnputilを使った方法が楽でしたので下記のようなバッチを作成して実現しました。
ほかの方法が気になる方は是非調べてみてください。機会があればまとめますね。

@echo off
cd /d %~dp0
echo ドライバをインストールします
pause

for /f %%a in ('dir /b /s *.inf') do (
      echo %%a インストール
      pnputil /add-driver %%a /install
)
pause

この内容でバッチファイルを作り、先程保存したドライバのバックアップフォルダ内に保存します。その後、そのバッチファイルを管理者権限で実行すると、順次ドライバがインストールされます。

基本的にはpnputilのadd-driver,installオプションを使っています。%%aの部分はドライバのinfファイル名が入ります。Forコマンドにてフォルダ内にあるinfファイルをすべて読み取りpnputilでインストールする動きになります。

標準でインストール済みのドライバ等もバックアップされてしまうため、インストールされないドライバもあります。また、少し大雑把な動作の様に思えますので、いざという時に使えなくならない様にするための方法に近いかもしれません。

一応ですが、私の環境ではクリーンインストールのOSに本手法でドライバをクリーンインストール前のバックアップを復元したところ、デバイスマネージャ上での不明なデバイスは残りませんでした。

【参考】Microsoft PnPUtil のコマンド構文

https://docs.microsoft.com/ja-jp/windows-hardware/drivers/devtest/pnputil-command-syntax

注意点

私がこの方法でインストールを行う際に何度か遭遇したのですが、なぜか1回で正常に認識しないことがありました。

これはドライバのinfファイル自体はインストールされるが、デバイスの検出・ドライバの適用はコンピュータ任せなのではと考えています。そのため、インストール後に時間をとってみたり、再起動を行ったり、もう一度インストールバッチを実行する等をする必要があるかもしれません。

上記の通り確実に・・・という振舞いはしないため、もっと良い方法があるのかもしれません。
他の方法が見つかりましたら、また紹介させていただければと思います。

何かのお役に立てれば幸いです。

コメント

Translate »
タイトルとURLをコピーしました