自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/ExcelVBA/JavaScript/Raspberry Piなどで色んなことを自動化

Windows10 1909→2004のアップグレードを完全自動化するPowershellスクリプト

最新バージョンのインストーラからSetup.exeを取り出して引数に /auto upgrade を渡すことでFeature Updateも実行可能だったけど、インストーラ用意するのすら面倒。

www.ka-net.org

どうにかPowerShellのコマンドだけで出来ないか調べてみていたとき、検索ワード「powershell "feature update"」でググるとそれっぽいものが見つかった。なるほど「Windows 10 更新アシスタント」をダウンロードしてきて実行すればいいのか。これなら事前準備を省略できる!ということで試してみる。

social.technet.microsoft.com

Windows10を最新のメジャーバージョンにアップグレードするPowerShell

# 作業用フォルダ作成
$dir = 'C:\_Windows_FU\packages'
mkdir $dir

# Window10更新アシスタントをダウンロード
$webClient = New-Object System.Net.WebClient
$url = 'https://go.microsoft.com/fwlink/?LinkID=799445'
$file = "$($dir)\Win10Upgrade.exe"
$webClient.DownloadFile($url,$file)

# 実行
Start-Process -FilePath $file -ArgumentList '/skipeula /auto upgrade /UninstallUponUpgrade' -Wait

引数の内容

quietinstall ... 画面表示なしで実行

skipeula ... 確認ダイアログをスキップ

auto upgrade ... 自動アップグレードを実行

UninstallUponUpgrade ... アップグレードが終わったら更新アシスタントをアンインストール

このURL https://go.microsoft.com/fwlink/?LinkID=799445 がどこのやつなのか気になって調べてみると https://www.microsoft.com/ja-jp/software-download/windows10 の「今すぐアップデート」ボタンでした。

f:id:maru0014:20201013224730p:plain

実際に動かしてみた

まずwinverを実行してバージョン確認。1909ですがこの10行程度のPowerShellスクリプトを実行するだけで自動的に最新バージョンである2004までアップグレードされました。

難点としてはインストール完了後の再起動時に30分の待機時間があり、これをスキップさせるような引数が見当たらなかったので余計に30分時間が掛かってしまうことです。完全放置出来るのはメリットですが急ぎなら再起動ボタンを手動で押すことに。もしこれを回避出来る方法があればコメントください!

あとは通常のWindowsUpdateを繰り返し実行するスクリプトに組み込めば楽に最新状態に持っていけますね。また今度そちらも記事にします。

調べていて参考になりそうだと思ったページ

social.technet.microsoft.com

support.microsoft.com