Windows10|大型アップデートのダウンロードとインストールをバッチ処理で自動化

Tips
スポンサーリンク

今回の記事では、Windows 10 の大型アップデート(Windows Feature Update)のダウンロードからインストールまでの流れをWindowsのバッチコマンド(batファイル)で自動化する方法を紹介します。
 
 
2022年11月追記
当記事では21H2が最新バージョンだった時の内容ですが、「22H2」でも同じ方法で適用できることを確認しております。

 
 

Windowsの大型アップデート(Windows Feature Update)について

Windows10やWindows11では2種類の更新プログラムが用意されており、一つは過去のOSのWindows Updateでも定期的に配信されていた脆弱性や不具合の修正に関する更新プログラムです。
こちらは月に一度配信されます。

もう一つは、Windows標準機能の変更や追加も含む大規模なアップデートです。
こちらは半年ごとの間隔で配信されます。
21H2以降から、Windows11のリリースに合わせて「年に1回」のサイクルで配信されます。
過去のWindowsで言えばサービスパックのようなものになります。

参考までに、Microsoftが公開しているWindows 10 のバージョンごとのリリース情報のリンクを紹介しておきます

大型アップデートで配信されたバージョンごとにMicrosoftのサポート期日が決まっており、それを過ぎると新しい更新プログラムは配信されなくなります。

尚、WSUSやADのグループポリシーで大規模アップデートの適用を管理していない限りこのアップデートは自動的には適用されないため、古いバージョンのまま使用し続ける端末が発生してしまいます。

その場合に、今回紹介するバッチコマンドを記述したbat形式のファイルを作成して、それをIT資産管理ツールなどで各端末に遠隔で配布して実行させる想定です。
 
 

「Update Assistant」を使用した手動アップデート

前述した大型アップデートは、ダウンロードが可能になると、Windows Update画面内にその通知が表示されます。
本来はそこからアップデートを実行するのですが、アップデート方法は他にも幾つかあり、その一つは、Microsoftのウェブサイトから「Update Assistant(Windows10 更新アシスタント)」をダウンロードしてインストールし、その機能を利用してアップデートを行う方法です。

「Update Assistant」がダウンロードできるMicrosoftのページは以下のリンクになります。

Windows 10 のダウンロード

Windows10のUpdate Assistantダウンロード

ダウンロード後に起動すると、以下の画面が表示されてアップデートが手動で行えます。

Update Assistantの起動画面

20H2→21H2へアップデートする際のUpdate Assistantの起動画面

今回の記事では、この「Update Assistant」をMicrosoftのウェブサイトからダウンロードし、当ツールをバックグランドで実行して最新のバージョンにアップデートする一連の処理をバッチコマンドで実装します。
 
 

「Update Assistant」をダウンロードしてサイレント実行するbatの作成

当項では、前述した「Update Assistant」をMicrosoftのウェブサイトからダウンロードし、その実行ファイルをサイレント実行して最新のバージョンにアップデートを実施するバッチコマンドの具体的な作成方法を紹介していきます。
 

【事前作業】「Update Assistant」のダウンロードリンクを確認

事前準備として、「Update Assistant」の実行ファイルをダウンロードする際に使用するリンク先のURLを取得しておきます。
今回の記事では「Microsoft Edge」を使用して行います。

まずは、前述した「Update Assistant」のダウンロードページにアクセスして、「今すぐアップデート」を押下します。

Windows10のUpdate Assistantダウンロード

「Update Assistant」の実行ファイルである、「Windows10Upgrade9252.exe」のダウンロードの確認をするポップアップがウィンドウ右上に表示されます。
そのポップアップにカーソルを載せると、「・・・」が表示されるため、そこをクリックします。
※上記のファイル名は当記事執筆時(2022年9月)のものであり、変わる可能性があります。

Windows10Upgrade9252.exeダウンロード時のポップアップ

さらに下部に選択できる操作が表示されるため、「ダウンロードリンクのコピー」を選択します。

Edgeのダウンロードリンクのコピー

コピーしたURLは後から使用するため、テキストファイル等に貼り付けて保存しておきます。
このURLを叩けば、直接「Update Assistant」の実行ファイルをダウンロードできるようになります。
 

「Update Assistant」をダウンロードしてサイレント実行するバッチコマンド

バッチコマンドの実装サンプルを紹介していきます。
以下のコマンドを記述して、拡張子「.bat」で保存してください。

  @echo off
  rem Cドライブ直下に作業フォルダがなければ作成します。
  if not exist "C:\WORK" mkdir "C:\WORK"
  rem Update Assistantをダウンロードして作業フォルダに保存します。※リンク先URLや保存先などは書き換えて使用してください。
  bitsadmin /transfer uadl https://download.microsoft.com/download/xxxxxxxxxxxxxxxxxxxxxxxx/Windows10Upgrade9252.exe C:\WORK\Windows10Upgrade9252.exe
  cd C:\WORK
  rem サイレントアップデートします。
  Windows10Upgrade9252.exe /quietinstall /skipeula /"auto upgrade" /UninstallUponUpgrade
  rem 処理を終了します。
  exit

Windows10Upgrade9252.exeに対して起動引数を渡すことで、起動画面を非表示にしたまま自動アップデートを実行できます。

上記のバッチコマンドで使用している「bitsadmin」に関するMicrosoftのリファレンスのリンクは以下です。
このコマンドのパラメーターなどの詳しい仕様については以下のリンク先をご確認ください。

当バッチコマンドの注意点

  • 処理実行後、一定時間で強制的にOSの再起動が発生します。
  • 管理者権限で実行するか「SYSTEM」アカウントから実行させることが必要です。
  • 処理実行中は一切画面に表示されず、再起動直前に画面全体で通知が出ます。
  • バックグランドでアップデート処理中にシャットダウンされる可能性がある。

再起動までの時間は処理完了後30分らしいですが、バックグランドで実行されて処理完了の通知もないため、よくわかりません。
「SYSTEM」アカウントはAdministratorと同等の権限を持つビルトインアカウントです。
再起動直前に「更新アシスタントにより再起動します」といった通知が画面全体に表示され、再起動を回避することはできません。
後、アップデート処理はバックグランドで実施され、その間もユーザーは自由に操作ができるため、もしシャットダウンなどの操作をされた場合にどうなるかの検証はできていません。

上記の注意点でも説明しましたが、実行して一定時間が経過した後に必ず再起動が発生するため、このバッチ処理を実行させるタイミングが重要です。
例えば、配信対象の端末使用者には電源を付けたまま退社してもらうように事前に案内をしたうえで、夜間に当バッチを一斉配布して実行させたり、タスクスケジューラに登録して夜間に実行させるといったやり方に良さそうです。
 

2022年11月加筆 コマンドに管理者権限実行処理を追加

上項で紹介したbatコマンドの場合、手動でbatファイルを起動する分には正常に処理ができるが、何らかのスクリプト配信で実行させた場合に処理が正常終了しない場合がありました。

その場合、以下のバッチコマンドで試してみてください。

  @echo off
  REM 管理者として実行されているかを判定します。
  echo 管理者として実行されているか判定します。
  for /f "tokens=3 delims=\ " %%A in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%A
      if not "%LEVEL%"=="High" (
          REM Powershellを起動し、以降のコマンドを管理者権限で実行します。
          echo 管理者として実行しなおします。
          powershell -NoProfile -ExecutionPolicy Unrestricted -Command "Start-Process \"%~f0\" -Verb runas"
          timeout /t 5 /nobreak >nul
          exit
      )
  cd /d %~dp0
  rem Cドライブ直下に作業フォルダがなければ作成します。
  if not exist "C:\WORK" mkdir "C:\WORK"
  rem Update Assistantをダウンロードして作業フォルダに保存します。※リンク先URLや保存先などは書き換えて使用してください。
  bitsadmin /transfer uadl https://download.microsoft.com/download/xxxxxxxxxxxxxxxxxxxxxxxx/Windows10Upgrade9252.exe C:\WORK\Windows10Upgrade9252.exe
  cd C:\WORK
  rem サイレントアップデートします。
  Windows10Upgrade9252.exe /quietinstall /skipeula /"auto upgrade" /UninstallUponUpgrade
  rem 処理を終了します。
  exit

バッチコマンドの冒頭でPowerShellを起動して管理者権限でコマンドプロンプトを実行し直しています。

ただ、このバッチコマンドでも、端末の「UAC」の設定によっては、「Windows10Upgrade9252.exe」を起動したさいにバックグランドでUACの確認メッセージが表示され、それで処理が止まってしまいます。

その場合は、このバッチコマンドを配信する前にいったん「UAC」をグループポリシーなどで一時的に無効にし、OSを再起動をさせてUACの変更を適用した後に当バッチコマンドを実行させてください。
それで処理が正常に実行されるようになるかと思います。

 
 

最後に

今回はWindowsのバッチコマンドを使用して、Windows 10 の大型アップデートをサイレントインストールする方法を紹介させていただきました。
再起動を止められればより使い勝手もよくなると思うのですが、この再起動は回避できないようなので、今回紹介したバッチを実行するタイミングは検討が必要です。

また、インターネットで検索するとPowerShellで同様の実装をしている記事はあり、PowerShellの方がスマートに実装できますが、batファイル形式の方が実行手段に関して汎用性があるため、上手く使い分けていただくとよいかと思います。

今回も読んでいただきましてありがとうございました。
それでは皆さまごきげんよう

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