SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Windows Server 2016 / 2019 のスクリプトによる Windows Update の制御を行う際の参考情報

leave a comment

Windows Server 2012 までの Windows Update をスクリプトから実行する場合、Windows Update Agent API を使用したスクリプトを実行する機会が多かったかと思います。

PowerShell ではありませんが、Searching, Downloading, and Installing Updates で公開されているような方法で、Windows Update をスクリプトで制御することが可能でした。

Windows Server 2016 からは、Windows Update Orchestrator によって制御が行われるようになっており、従来の COM の「Microsoft.Update.AutoUpdate」を使用して、Windows Update をスクリプトから実行することも可能でしたが、それ以外の方法も提供が行われています。

Windows Server 2016 からは、WMI の Windows Update Provider を使用して Windows Update の制御が実行できるようになっています。

日本語の情報としては Nano Server の更新を管理する で触れられていますが、「root/Microsoft/Windows/WindowsUpdate」の Namespace 配下のクラスを使用することで、様々な操作を行うことができます。

Windows Server 2019 になると、「WindowsUpdateProvider」のモジュールとしていくつかのコマンドレットが追加されており、WMI を直接呼び出さなくても、コマンドレットで簡単に操作を行うことができるようになっています。
image

Windows Server 2016 の場合は、コマンドレットが提供されていませんので、WMI を呼び出すことで、Windows Server 2019 の WindowsUpdateProvider のような操作を行うことができます。

例えば、「Get-WULastInstallationDate」と等価のことを Windows Server 2016 で実行したい場合には、次のようなスクリプトを実行しすることで代替できます。
(Windows Server 2019 のコマンドレットも WMI のメソッドを Invoke しているものになりますので、Windows Server 2016 で該当のメソッドを直接呼び出しています)

Invoke-CimMethod -Namespace "root/Microsoft/Windows/WindowsUpdate" -ClassName "MSFT_WUSettings" -MethodName GetLastUpdateInstallationDate

 

情報の取得系であれば、「MSFT_WUSettingsのクラスは以下の各種メソッドを使用することで対応できます。

image

そのほかの操作方法についてですが、Scripting Windows Update のラボのスクリプトがとても参考になります。

この中では、Windows Server 2016 / 2019 の両対応のスクリプトとして、Windows Update を WMI でスクリプトから実行する処理が記載されておりますので、このスクリプトを参考にすることで、2016 でも動作可能なスクリプトの開発ができるかと。

Share

Written by Masayuki.Ozawa

5月 11th, 2020 at 9:00 pm

Leave a Reply