最新バージョンのインストーラからSetup.exeを取り出して引数に /auto upgrade
を渡すことでFeature Updateも実行可能だったけど、インストーラ用意するのすら面倒。
どうにかPowerShellのコマンドだけで出来ないか調べてみていたとき、検索ワード「powershell "feature update"」でググるとそれっぽいものが見つかった。なるほど「Windows 10 更新アシスタント」をダウンロードしてきて実行すればいいのか。これなら事前準備を省略できる!ということで試してみる。
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 '/quietinstall /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 の「今すぐアップデート」ボタンでした。
実際に動かしてみた
まずwinverを実行してバージョン確認。1909ですがこの10行程度のPowerShellスクリプトを実行するだけで自動的に最新バージョンである2004までアップグレードされました。
難点としてはインストール完了後の再起動時に30分の待機時間があり、これをスキップさせるような引数が見当たらなかったので余計に30分時間が掛かってしまうことです。完全放置出来るのはメリットですが急ぎなら再起動ボタンを手動で押すことに。もしこれを回避出来る方法があればコメントください!
あとは通常のWindowsUpdateを繰り返し実行するスクリプトに組み込めば楽に最新状態に持っていけますね。また今度そちらも記事にします。