以前からLinuxのようにアプリ(パッケージ)に加えて、月々の更新プログラムもコマンドラインから更新できないかと思っていた。以前のWindowsならWuauclt.exeが使用できたものの、Windows 10/11は使用不可能である。

  • Windows 11でもWuauclt.exeは用意されているが、「Wuauclt.exe /detectnow」を実行しても動作しない

Windows 8以降はタスクスケジューラから呼び出すUsoClient.exeを使用できるが、異なるWindowsバージョンの更新プログラムを取得するなど、安定性に疑問が残る。Microsoftが公式ドキュメントを残していないのも不安だ。

そこで今回は、Windows PowerShellモジュールとして定番のPSWindowsUpdateを使用する。

  • 「Win」+「X」キー→「A」キーと順に押すか、スタートを右クリック/長押しし、「ターミナル(管理者)」をクリック/タップする

  • プロンプトに「Install-Module PSWindowsUpdate」と入力して「Enter」キーを押し、「Y」キーを押す

メインPCはPSWindowsUpdateをインストール済みのため、今回は別環境の手順も交えた。上図のNuGetプロバイダーに関するメッセージは、.NET用パッケージマネージャーのNuGetが存在しない際に現れる。基本的にはメッセージに従ってインストールすればよい。

関心をお持ちの読者は公式ドキュメントを合わせてご覧いただきたい。

  • NuGetプロバイダーのインストール/更新を終えると、PSWindowsUpdateモジュールを展開するために「Y」キーと順に押す

  • 「Get-WindowsUpdate」と入力して「Enter」キーを押す。Windows PowerShellの実行ポリシーで、スクリプト実行が禁止されるとエラーになる

  • 「Set-ExecutionPolicy RemoteSigned」と入力して「Enter」キーを押す。確認をうながすメッセージが現れたら、同意の操作を行う

後は更新プログラムの検出と適用だ。前者は「Get-WindowsUpdate」、後者は「Install-WindowsUpdate」で実行できる。当然ながら適用する更新プログラムが存在しない場合、Get-WindowsUpdateを実行しても何も現れない。

  • 「Get-WindowsUpdate」と入力して「Enter」キーを押すと、更新プログラムが現れる。存在しない場合はそのまま終了する

  • 「Install-WindowsUpdate」と入力して「Enter」キーを押す。確認をうながすメッセージが現れたら「A」キーを押す

これならwinget(Windows Package Manager)と組み合わせて、アプリやライブラリー、更新プログラムを最新の状態に保てるだろう。